是否有可能以某种方式使用:selected选项,您可以在带有grouped_collection_select函数的普通选择视图助手上使用?我想设置在我的列表中预先选择的值。我试过传递:选择没有运气的选项!
以下是我测试的一些代码信息:
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 :(得分:9)
我遇到了同样的问题,并使用option_groups_from_collection_for_select helper
和select
帮助文件解决了问题:<{3}}。
第一步是创建分组选项。举个例子,看起来应该是这样的:
<% 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 :(得分:1)
也许为时已晚,但groups_collection_select的API文档指出: '将从实例对象的调用方法返回的值被选中。'
因此,您甚至不必指定:selected选项,因为Rails将根据您的属性的当前值自动选择。 如果subscription_plan_id的值为5,则表示将选择该值。
如果这应该是默认值,那么您可以在模型中使用after_initialize进行设置。
答案 2 :(得分:0)
实际上你需要发送选项include_blank,例如
<%= grouped_collection_select :id, model.all, options = {:include_blank => 'Selecione'}%>