如何使用 simple_form 组合多个 select?

How can I have a multiple grouped select with simple_form?

默认情况下,由于是 has_many 关系,这给了我一个倍数 select:

<%= f.association :tags %>

但是,我想根据类别对标签进行分组。然而,当我这样做时,我的 select 变成了一个正常的 select,只允许一个 selection。换句话说,输入上的 "multiple" 属性消失了。

<%= f.association :tags, as: :grouped_select, collection: TagGroup.all, group_method: :tags %>

我尝试了不同的建议,例如添加 html: {multiple: "multiple"} 或简单地添加 multiple: true,但都没有任何效果。

我错过了什么吗?在这种情况下,我看不出为什么我的 select 不能是倍数,因为所有分组的 select 应该做的是添加 optgroup 标签。

这是我在没有进行分组的情况下得到的标签 select:

<select multiple="multiple" class="select optional" name="news_story[tag_ids][]" id="news_story_tag_ids">

与分组 select:

<select class="grouped_select optional" name="news_story[tag_ids]" id="news_story_tag_ids">

它似乎也破坏了 name 属性,但我还没有测试这是否会造成问题。

编辑:我会满足于 grouped_collection_select 助手,但它也不提供用于添加属性的选项散列。 http://apidock.com/rails/v4.2.1/ActionView/Helpers/FormOptionsHelper/grouped_collection_select

我自己想出来的。

这产生了正确的输出:

<%= f.association :tags, as: :grouped_select, collection: TagGroup.all, group_method: :tags, input_html: { :multiple => true } %>

关键部分是:

input_html: { :multiple => true }