2012-04-09 8 views
10

Es scheint nur ein wenig Dokumentation über die Funktion gruppierte_Auswahl in simple_form 2.0 um http://simple-form.plataformatec.com.br/#usage/collections. Die Dokumentation bietet die Zeile:Erstellen einer OptGroup Verwenden von Simple_Form Gem auf Rails 3.2

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

Aber das scheint nicht mir genug Kontext zu geben, damit es funktioniert. Hier ist was ich habe.

Ich habe drei Modelle Anfrage, Ad und Einfügungen

Anzeigen has_many Einfügungen und Einfügungen belongs_to Anzeigen Anfrage belongs_to Insertion und Einfügungen has_many Anfragen

Diese Drop-Down ist für die Ansicht Anfrage. Mit simple_form kann ich = f.input :insertion, :collection => @ads erhalten, um mindestens eine Liste der Anzeigentitel im Dropdown-Menü auszugeben. Ich möchte, dass ad.title als optgroup dient. Dann würde Ich mag die Anzeigen Einfügungen haben als auswählbare Inhalt zu dienen ... so etwas wie:

<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> 

Kann jemand eine Beratung bieten zu machen diese simple_form-Funktion? Ich würde es wirklich schätzen!

Bitte lassen Sie mich wissen, wenn ich Ihnen noch etwas über die App erzählen kann, wenn Sie Einblick in die Ausführung dieser Eigenschaft haben.

Vielen Dank im Voraus!

UPDATE: Ich habe in der Lage, etwas teilweise zum Laufen zu bringen mit:

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

Das Problem dabei ist, dass es keine Möglichkeit, zu spezifizieren, welche Spalte als Anzeigetext von dem, was verwendet wird, kann ich sagen . Ich begrüße jede Eingabe.

Antwort

20

Nach ein paar zusätzlichen Nachforschungen, besser auf die Dokumentation schauen, und mit der Syntax spielen Ich habe das gelöst, was ich gesucht habe.

Die Standard-Rails grouped_collection_select sieht wie folgt aus:

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

Diese erneuert sich mit der simple_form werden kann 2.0 mit folgender Syntax:

= 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...") 

Ich hoffe, dass andere Menschen in der Zukunft hilft.

+0

meinen Arsch gespeichert. Vielen Dank! : D –

0

Eine alternative Methode ist:

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

Das funktioniert gut, wenn Sie versuchen, eine optgroup wählen, ohne die Verwendung von aktiven Datensatz modals zu bilden.

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

Verwandte Themen