2011-01-25 72 views
1

Rails 2.3.5,Ruby 1.86Fixnums as symbols來自collection_select的警告

我不是很理解這個警告。當@directoriescollection_select中使用時,我收到@directories中包含的每條記錄的警告。我試過玩弄: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是什麼樣的? (@ collections.inspect) – 2011-01-25 15:01:28

回答

1

你在(:id).to_i作爲參數傳遞給collection_selectcollection_select然後將其用作send的參數。由於(:id).to_i是一個整數,因此使用整數作爲參數調用send幾乎總是一個錯誤,因此send會發出警告。

應當指出的是,沒有理由使用:id.to_i,而不是僅僅:id在這裏,因爲send(:symbol)send(:symbol.to_i)之間的唯一區別是,後者產生一個警告。

+0

是的,這是有效的。我覺得我好笨。我不知道爲什麼我這樣做或認爲它需要這樣。當我試圖讓collection_select工作(第一次和所有...)時,我非常困惑。謝謝! – Reno 2011-01-25 15:14:58