有没有一种方法可以基于同一表中的不同列对列进行分组,以实现具有分组选项的下拉菜单?

时间:2019-05-02 15:24:17

标签: ruby-on-rails ruby ruby-on-rails-5

我正在尝试显示一个下拉列表,其值应按同一表格中不同字段的顺序显示。

也就是说,表“用户”具有idcategorynamedescription

我需要显示一个用于用户名的选择菜单,并且这些值应按类别分组。我使用grouped_collection_select来实现这一点,但是运气不好,因为这些字段都在同一张表中。

<div class="field">
  <%= form.label :user_id %>
  <%= form.grouped_collection_select :user_id, Something.order(:category), User.order(:name), :category, :id, :name %>
</div>

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

让我们先看一下文档:https://api.rubyonrails.org/v5.1/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-grouped_collection_select

grouped_collection_select(object, method, collection, group_method, group_label_method, option_key_method, option_value_method, options = {}, html_options = {})

和一个示例:

grouped_collection_select(:city, :country_id, @continents, :countries, :name, :id, :name)

说实话,我自己还不太了解这种方法,所以让我们使用grouped_options_for_select

f.select :name, grouped_options_for_select(User.all.group_by(&:category))

假设您的模型具有category属性。