2012-04-09 58 views
10

似乎在simple_form 2.0中http://simple-form.plataformatec.com.br/#usage/collections的grouped_select功能上只有一点文档。该文档提供了行:创建一个optgroup在rails 3.2上使用simple_form gem

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

但这似乎没有给我足够的上下文,使其工作。这是我的。

我有三个型号:查询,广告和插入

广告的has_many插入,和插入belongs_to的广告 询价belongs_to的插入和插入的has_many咨询

此下拉便于查询视图。使用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) 

这样做的问题是,有没有办法来指定哪些列用作从我可以告诉的显示文本。我欢迎任何意见。

回答

20

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

标准导轨grouped_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...") 

我希望帮助其他人的未来。

+0

救了我的屁股。谢谢! :d – 2014-08-13 10:14:48

0

另一种方法是:

<%= 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-helpershttp://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-option_groups_from_collection_for_select

相关问题