2013-04-30 52 views
3

選擇字段我使用這個代碼在我看來,以創建一個選擇grouped_collection_select(:query, :city_id, @states, :cities, :name, :id, :name, {:selected => "Chicago"}),看起來像這樣:enter image description here的Rails在grouped_collection_select

我想「芝加哥」默認選擇有。我怎樣才能使這個工作?

+0

注意對於其它回答者:設置':selected'到這個城市的我d(不是名字)不起作用。 – 2013-05-02 22:31:01

+0

你有這個工作嗎? – dax 2013-10-17 17:43:07

+0

@dax不,我最終只是添加了一個默認的「請選擇位置」類型的選項http://weekaway.com – bcackerman 2013-10-17 21:37:37

回答

1

可以預先選擇一個選項,但在文檔中不太清楚。第一個參數(此處爲:city)必須是在self上定義的實例變量的名稱。存儲在該實例變量中的對象必須有一個以第二個參數命名的方法(這裏是::id)。現在@city.id應該返回您想要選擇的城市的ID。

@city = City.find_by_name("Chicago") 
grouped_collection_select(:city, :id, @states, :cities, :name, :id, :name) 

我給你製作了a gist,稍微改變了一些例子,以便更好地理解。注意:這個要點應該在導軌控制檯中執行,以便include可以工作

+0

我覺得'City.find_by_name(「芝加哥」)'更有地道。 – 2013-05-03 03:13:40

+0

同意 - 回答編輯。 – tessi 2013-05-03 05:36:06

2

嗨,您可以在上面的示例中選擇「芝加哥」,方法是定義選定的芝加哥鍵碼索引。

下面是一個例子:

@city_group = 
       [ 
       ["Wisoncin", [["Lake Geneva", "1"], 
       ["Elkhart Lake", "2"]]], 
       ["Michigan", [["Harbor Country", "3"], ["Traverse City", "4"]]], 
       ["Indiana", [["Bloomington", "5"], ["Valparaiso", "6"]]], 
       ["Minnesota", [["Twin Cities", 
       "7"], ["Bloomington", "8"], ["Stillwater", 
       "9"]]], 
       ["Florida", [["Sanibel & Captiva", "10"]]], 
       ["Illinois", [["Chicago", "11"], 
       ["Galena", "12"]]], 
       ] 

,並在您的觀點補充一點:

<%= select_tag(:brand_id, grouped_options_for_select(@city_group, selected_key = "11", prompt = nil)) %> 

希望它能幫助!請享用!

+0

selected_key =「」就是我正在尋找的東西。像魅力一樣工作。 – iamtoc 2015-01-28 08:37:57

1

解決方案:1

city = City.find_by_name("Chicago") 
select(:query, :city_id, option_groups_from_collection_for_select(@states, 
      :cities, :name, :id, :name, city.id)) 

解決方案:2

city_obj = City.find_by_name("Chicago") 
grouped_collection_select(:query, :id, @states, :cities, :name, :id, :name, 
         {:object => city_obj}) 

解決方案:3

@city = City.find_by_name("Chicago") 
grouped_collection_select(:city, :id, @states, :cities, :name, :id, :name)