2012-04-09 9 views
10

Sembra esserci solo una piccola documentazione sulla funzione grouped_select in simple_form 2.0 allo http://simple-form.plataformatec.com.br/#usage/collections. La documentazione offre la riga:Creazione di un gruppo opt usando la gemma simple_form su Rails 3.2

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

Ma questo non sembra darmi un contesto sufficiente per farlo funzionare. Ecco cosa ho.

Ho tre modelli: Richiesta di informazioni, annuncio e inserimenti

annunci has_many inserimenti, e inserimenti belongs_to annunci Inquiry belongs_to di inserimento, e inserimenti has_many Richieste

Questa discesa è per la vista inchiesta. Usando simple_form posso ottenere = f.input :insertion, :collection => @ads per mostrare almeno un elenco dei titoli degli annunci nel menu a discesa. Mi piacerebbe che la funzione ad.title fungesse da optgroup. Poi mi piacerebbe avere le inserzioni annunci per servire come il contenuto selezionabile ... quindi qualcosa di simile:

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

Qualcuno può offrire qualche consiglio su come eseguire le simple_form geometria di lavoro? Lo apprezzerei davvero!

Per favore fatemi sapere se posso dirvi qualcos'altro sull'app se avete un'idea di come eseguire questa proprietà.

Grazie in anticipo!

UPDATE: Sono stato in grado di ottenere qualcosa di lavoro utilizzando parzialmente:

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

Il problema di questo è che non c'è modo di specificare quale colonna viene utilizzata come testo visualizzato da quello che posso dire . Accolgo con favore qualsiasi input.

risposta

20

Dopo alcune ricerche aggiuntive, guardando meglio la documentazione e giocando con la sintassi ho risolto quello che stavo cercando.

Gli standard di Rails grouped_collection_select assomiglia a questo:

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

questo può essere rifatto nel usando simple_form 2.0 con la seguente sintassi:

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

Mi auguro che aiuta altre persone in futuro.

+0

salvato il culo. Grazie! : D –

0

Un metodo alternativo è:

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

Questo funziona bene quando si sta cercando di formare un optgroup selezionare senza l'uso di modali record attivo.

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

Problemi correlati