在选择选项的标签中显示父级

时间:2018-04-13 12:14:49

标签: ruby-on-rails jquery-select2 simple-form

我有一个选择框

<%=simple_form_for order_item do |oi|%>
  <%= order_item.association :category, label: false, collection: current_company.categories, placeholder: 'Category', input_html: { class: 'form-control form-control-sm drop_down_input order_item_category} %>
<%end%>

此选择框与select2

绑定

目前,当我搜索任何内容时,会显示如下结果: -

enter image description here

但我希望结果显示搜索和显示项目父级的标签(注意: - 类别有一个父级。一个类别有很多子级)

enter image description here

然而我尝试使用option_groups,问题是我无法选择option_group(它是父级),但我想选择所有类别。

类别模型

belongs_to :parent, class: 'category', foreign_key: 'parent_id'
has_many :children, class: 'category'

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

请你试试这样的事情:

<%= order_item.association :category, collection: current_company.categories.collect { |c| [ c.id, "#{c.name} in #{c.parent.name}" ] }, value_method: :first, label_method: :last, placeholder: 'Category', input_html: { class: 'form-control form-control-sm drop_down_input order_item_category} %>

这应该会在select选项中为您提供有关父级的信息。我测试了它但没有jquery-select2

然后,您可能必须使用一些CSS / JS / HTML将in ...移动到另一行。请看一下here

修改

据我发现jquery-select2在选项的文本中搜索,所以我的解决方案无法按预期工作。

例如:如果您有“法拉利汽车”选项并输入Cars,则会显示Cars为父类别的所有选项。如果您希望避免这种情况,可以更改匹配结果的方式:doc