2011-01-25 5 views
1

Rails 2.3.5、Ruby 1.86記号としてのFixnum

私はこの警告を実際に理解していません。私は、@directoriescollection_selectで使用すると、@directoriesに含まれる各レコードについて1つの警告を得ています。私は:idのインスタンスを使って遊んでみましたが、違った運があります。私はそれが単純なものだと確信しています(私はまだかなり新しいです)。

ありがとうございました!

エラー:

C:/Ruby186/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/helpers/form_options_helper.rb:328:

warning: do not use Fixnums as Symbols

問題のあるコード:

<% if !params[:directory].nil? %> 
    <%= collection_select :directory, :id, @directories, (:id).to_i, :name, 
         {:selected => params[:directory][:id].map{|id|id.to_i}}, {:size => 7, :multiple => true} %> 
<% else %> 
    <%= collection_select :directory, :id, @directories, (:id).to_i, :name, 
         {:selected => @directory_ids}, {:size => 7, :multiple => true} %> 
<% end %> 
+0

@コレクションはどのように見えますか? (@ collections.inspect) –

答えて

1

あなたはcollection_selectへの引数として(:id).to_iを渡しています。 collection_selectは、それをsendの引数として使用します。 (:id).to_iは整数で、sendは引数として整数で呼び出されているため、ほとんどの場合間違いです。sendは警告を発します。

send(:symbol)send(:symbol.to_i)間の唯一の違いは、後者が警告を生成することであるので、ここで:id.to_iだけではなく:idを使用する理由はないことに留意すべきです。

+0

はい、うまくいきます。私は馬鹿だと感じる。なぜ私はそれをそのようにしていたのか、そうする必要があると思ったのか分かりません。 collection_selectを動作させようとしたとき、私はかなり混乱していました(初めてとすべて...)。ありがとうございました! – Reno

関連する問題