如何使用 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 }
默认情况下,由于是 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 }