使用方法:使用grouped_collection_select选择

是否有可能以某种方式使用: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与组选择很好地玩,所以我必须手动完成,但是当用户validation失败时我不会保留此值。 我想在修复validation错误时保留此设置。

我刚刚遇到了同样的问题并使用option_groups_from_collection_for_select helper和以下文档中记录的select帮助程序解决了它: http : option_groups_from_collection_for_select helper

第一步是创建分组选项。 举个例子,看起来应该是这样的:

 <% 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) %> 

你可以将它全部写在一行中,我只是将选项分成一个单独的变量来说明两种不同的方法。

也许为时已晚,但groups_collection_select的API文档指出:’将从实例对象的调用方法返回的值将被选中。

因此,您甚至不必指定:selected选项,因为Rails将根据您的属性的当前值自动选择。 如果subscription_plan_id的值为5,则表示将选择该值。

如果这应该是默认值,那么您可以在模型中使用after_initialize进行设置。

实际上你需要发送选项include_blank例如

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