我很好奇如何创建一个下拉菜单,其中包含在Rails应用程序中按类别分组的位置。
先前的建议是尝试使用grouped_options_for_select表单助手使用f.select_tag。 确实有效,但是当前端用户选择位置时,请求没有传递到控制器,因此位置字符串未显示在位置确认页面上。
在阅读文档时,如果要对Models进行此操作,我将使用f.select表单帮助器,但是我很好奇我是否可以使用此表单帮助器创建分组选项 strong>
以下是使用 f.select_tag帮助器(在瘦模板视图中)的代码:
f.select_tag :location_id, grouped_options_for_select(grouped_locations_hash), { include_blank: true }, class: 'form-control'
使用上述帮助程序,用户在前端位置的选择不会传递给控制器。
尝试使用 f.select表单助手,
f.select :location_id, options_from_collection_for_select(locations_array, :id, :name), { include_blank: true }, class: 'form-control'
...正在传递用户选择,但是,下拉菜单中没有将位置分组为类别(我希望如此)。
来自社区的任何建议和参考?
非常感谢!
答案 0 :(得分:0)
您可以映射集合,然后按数组中的值将其分组,例如
<%= f.select(:location_id, grouped_options_for_select(Location.all.map{|l| [l.name, l.category_name, l.id]}.group_by { |c| c[1] }), {include_blank: "Select one..."}, {:class => 'grouped_select',id:"location_grouped"}) %>
这将创建按类别名称分组的选择。