Fixnums as Symbols来自collection_select的警告

时间:2011-01-25 14:45:19

标签: ruby-on-rails

Rails 2.3.5,Ruby 1.86

我并不是真的理解这个警告。在@directories中使用@directories时,我对collection_select中包含的每条记录收到一条警告。我尝试过使用:id个实例来使用它们,但没有运气。我确信这很简单(我还是很新)。

提前致谢!

错误:

  

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

     

警告:不要将Fixnums用作符号

违规代码:

<% 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 %>

1 个答案:

答案 0 :(得分:1)

您将(:id).to_i作为参数传递给collection_selectcollection_select然后将其用作send的参数。由于(:id).to_i是一个整数,send被调用整数作为参数几乎总是一个错误,send会发出警告。

应该注意的是,由于:id.to_i:id之间的唯一区别是后者产生的是send(:symbol),因此没有理由使用send(:symbol.to_i)而不仅仅是{{1}}警告。