10

在http://simple-form.plataformatec.com.br/#usage/collections上似乎只有一些关于 simple_form 2.0 中 grouped_select 功能的文档。该文档提供了以下内容:

f.input :country_id, :collection => @continents, :as => :grouped_select, :group_method => :countries

但这似乎并没有给我足够的背景来让它发挥作用。这就是我所拥有的。

我有三个模型:查询、广告和插入

Ads has_many Insertions, and Insertions belongs_to Ads Inquiry belongs_to Insertion, and Insertions has_many Inquiries

此下拉列表用于查询视图。使用 simple_form 我= f.input :insertion, :collection => @ads至少可以在下拉列表中输出广告标题列表。我希望 ad.title 充当 optgroup。然后我想让广告插入作为可选内容......就像这样:

<select>
  <optgroup label="Ad.Title">
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
  </optgroup>
  <optgroup label="Ad.Title">
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
    <option value="Ad.Insertion.id">Ad.Insertion.Title</option>
  </optgroup>
</select>

任何人都可以提供有关使此 simple_form 功能正常工作的任何建议吗?我真的很感激!

如果您对如何执行此属性有深入了解,请告诉我是否可以告诉您有关该应用程序的任何其他信息。

提前致谢!

更新:我已经能够使用以下方法部分工作:

= f.input(:insertion_id, :collection => Ad.order(:name), :as => :grouped_select, :group_method => :insertions)

这样做的问题是,我无法指定将哪一列用作显示文本。我欢迎任何意见。

4

2 回答 2

23

经过一些额外的研究,更好地查看文档,并使用我已经解决了我正在寻找的语法。

标准 Railsgrouped_collection_select如下所示:

= f.grouped_collection_select(:insertion_id, Ad.order(:name), 
                              :insertions, :name, :id, :title, 
                              include_blank: "Please Choose...")

这可以使用 simple_form 2.0 重做,语法如下:

= f.input(:insertion_id, :collection => Ad.order(:name),
                         :as => :grouped_select,
                         :group_method => :insertions,
                         :group_label_method => :name,
                         :label_method => :title,
                         :include_blank => "Please Choose...")

我希望这对将来的其他人有所帮助。

于 2012-04-10T02:39:14.667 回答
1

另一种方法是:

<%= f.input :product_category do %>
    <%= f.select :product_category, grouped_options_for_select(Product.PRODUCT_CATEGORY), include_blank: true %>
  <% end %>

当您尝试在不使用活动记录模式的情况下形成 optgroup 选择时,这很有效。

参考: https ://github.com/plataformatec/simple_form#wrapping-rails-form-helpers 和 http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-option_groups_from_collection_for_select

于 2015-02-08T11:57:56.627 回答