5

是否有可能以某種方式使用:選定的選項,你將使用一個普通的選擇視圖助手與grouped_collection_select函數?我想設置在我的列表中預選的值。我試過傳球:作爲一個選擇沒有運氣選擇!如何使用:選擇與grouped_collection_select

這裏是我的測試一些代碼snippts:

grouped_collection_select 'user[subscription_attributes]', :subscription_plan_id, Trade.order(:name).all, :subscription_plans, :name, :id, :display_name, { :include_blank => true, :selected => 5 } 

grouped_collection_select 'user[subscription_attributes]', :subscription_plan_id, Trade.order(:name).all, :subscription_plans, :name, :id, :display_name, :include_blank => true, :selected => 5 

既不版本的作品。沒有選擇被設置。我正在使用它來爲嵌套模型設置一個值。我正在使用railscasts動態選擇列表方法:http://railscasts.com/episodes/88-dynamic-select-menus-revised

我無法使用formtastic良好地與組選擇,因此我必須手動執行此操作,但是當用戶失敗時我不保留此值驗證。我想在修復驗證錯誤時保留此設置。

+0

似乎是一個bug /功能沒有添加到Rails作爲grouped_collection_select。顯然這只是在主分支上修復它。我認爲唯一的選擇是使用Javascript。 – Noz 2012-09-27 21:50:22

+0

#barancw你有沒有想過如何預先選擇一個grouped_collection_select? Reddirt – Reddirt 2013-09-18 20:43:45

回答

9

我剛剛遇到同樣的問題,並使用option_groups_from_collection_for_select helperselect幫助程序解決問題,該幫助程序記錄在:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html

第一步是創建分組選項。以你的榜樣,它應該看起來像:

<% options = option_groups_from_collection_for_select(Trade.order(:name).all, 
    :subscription_plans, :name, :id, :display_name, 5) %> 

然後,我創建了像選擇對象:

<%= select('user[subscription_attributes]', :subscription_plan_id, options, 
    include_blank: true) %> 

你可以在同一行這一切寫出來,我剛剛爆發的選項到一個單獨的變量來說明兩種不同的方法。

1

也許爲時已晚,但grouped_collection_select的API文檔狀態爲: '將從實例對象的調用方法返回的值將被選中。'

因此,您甚至不必指定:selected選項,因爲Rails會根據您的屬性的當前值自動選擇。 如果subscription_plan_id的值爲5,那麼這將被選中。

如果這應該是默認值,那麼您可以在模型中使用after_initialize進行設置。

0

其實你需要發送的選項include_blank例如

<%= grouped_collection_select :id, model.all, options = {:include_blank => 'Selecione'}%>