2012-04-09 24 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

相關問題