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 %>
答案 0 :(得分:1)
您将(:id).to_i
作为参数传递给collection_select
。 collection_select
然后将其用作send
的参数。由于(:id).to_i
是一个整数,send
被调用整数作为参数几乎总是一个错误,send
会发出警告。
应该注意的是,由于:id.to_i
和:id
之间的唯一区别是后者产生的是send(:symbol)
,因此没有理由使用send(:symbol.to_i)
而不仅仅是{{1}}警告。