使用方法:使用grouped_collection_select选择

bar*_*ncw 5 validation ruby-on-rails ruby-on-rails-3 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 
Run Code Online (Sandbox Code Playgroud)

两个版本都不起作用.没有选择设置.我正在使用它为嵌套模型设置一个值.我正在使用railscasts动态选择列表方法:http://railscasts.com/episodes/88-dynamic-select-menus-revised

我无法使用formtastic与组选择很好地玩,所以我必须手动完成,但是当用户验证失败时我不会保留此值.我想在修复验证错误时保留此设置.

小智 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) %>
Run Code Online (Sandbox Code Playgroud)

然后我创建了选择对象,如:

<%= select('user[subscription_attributes]', :subscription_plan_id, options, 
  include_blank: true) %>
Run Code Online (Sandbox Code Playgroud)

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