Rails在grouped_collection_select中选择一个字段

时间:2013-04-30 19:55:23

标签: ruby-on-rails-3

我在我的视图中使用此代码创建一个如下所示的选择grouped_collection_select(:query, :city_id, @states, :cities, :name, :id, :name, {:selected => "Chicago"})enter image description here

我希望默认选择“芝加哥”。我怎样才能让它发挥作用?

3 个答案:

答案 0 :(得分: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)) %>

希望它有所帮助!请享用!

答案 1 :(得分: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有一个稍微不同的例子,以便更好地理解。注意:要点应在rails控制台中执行,以便include正常工作

答案 2 :(得分: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)