2010-12-20 34 views
0

後(內部工作服務器上使用Rails 2.3.5沒有選擇的版本,和我很新)軌,collection_select - 與記憶值:選擇表格提交

我建立一個搜索表單我需要爲用戶提供目錄列表,以便他們可以選擇要搜索的目錄。我試圖弄清楚如何在提交表單後讓選定的值保留爲collection_select。

假定用戶從collection_select選擇3名的目錄,這些目錄的id的是這樣的PARAMS:

directory: !map:HashWithIndifferentAccess 
    id: 
    - "2" 
    - "4" 
    - "6" 

我知道,你可以手動指定多項選擇:

<%= collection_select :directory, :id, @directories, :id, :name, 
       {:selected => [2,4,6]}, {:size => 5, :multiple => true} %> 

我也玩過一段時間,並能夠對params散列中的單個值「to_i」:

<%= collection_select :directory, :id, @directories, :id, :name, 
       {:selected => params[:directory][:id][0].to_i}, {:size => 5, :multiple => true} %> 

我無法弄清楚如何同時使用:目錄參數的所有值,以便在提交表單後用戶選擇的內容。謝謝你的幫助。

回答

1

我不能準確地知道你是問什麼,但如果你想獲得字符串數組中params[:directory][:id]作爲整數數組,你需要的是

params[:directory][:id].map{|id|id.to_i} 
+0

嘿雅各,謝謝您!這就像一個魅力。提交表單時,collection_selet中的所選值保持選中狀態。唯一的缺陷是如果沒有選擇任何東西,那麼頁面會出現無零錯誤的錯誤。我不知道我在做什麼,但是我在if語句中加入了一個if語句(<%if!params [:directory] ​​.nil?%>)來選擇具有「:selected」選項的colllection_select和它沒有的副本。我相信有更好的方法,但似乎工作。再次感謝! – Reno 2010-12-20 22:06:18