5

是否可以通过 grouped_collection_select 函数以某种方式使用您在普通选择视图助手上使用的 :selected 选项?我想设置在我的列表中预先选择的值。我试过传入 :selected 作为选项,但没有运气!

这是我的测试的一些代码片段:

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 与组选择很好地配合,所以我必须手动完成,但当用户验证失败时,我不会选择这个值。我想在他们修复验证错误时保留这个设置。

4

3 回答 3

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

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

<%= select('user[subscription_attributes]', :subscription_plan_id, options, 
  include_blank: true) %>

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

于 2013-01-28T20:31:35.717 回答
1

也许为时已晚,但 grouped_collection_select 的 API 文档指出:“将选择实例对象上调用方法返回的值。”

因此,您甚至不必指定 :selected 选项,因为 Rails 会根据您的属性的当前值自动选择。如果 subscription_plan_id 的值为 5,那么这就是将被选中的内容。

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

于 2013-11-22T15:27:34.063 回答
0

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

<%= grouped_collection_select :id, model.all, options = {:include_blank => 'Selecione'}%>
于 2016-04-14T20:20:44.170 回答