2012-05-04 8 views
6

Sto usando un campo collection_select, ma ho bisogno di anteporre le opzioni con una di default, che non rappresenta un particolare record di modello e viene usata per impostare il campo appropriato su NULL. Ma non riesco a trovare alcun modo per farlo.Rails: aggiunta di opzioni a collection_select

Se avete bisogno di ulteriori informazioni, non esitate a chiedere. Utilizzo di Rails 3.2.3 con helper di moduli standard.

P.S. So che posso fare qualcosa di simile:

@parents = ['default_name','nil'] 
@parents << Model.all.map {|item| [item.name,item.id]} 

Ma penso che ci sia un modo più elegante.

risposta

15

C'è un: un'opzione include_blank si può passare a collection_select metodo di supporto:

f.collection_select(:author_id, Author.all, :id, :name_with_initial, 
        :include_blank => "Nothing selected") 

C'è anche un'opzione simile chiamato: prompt, controlla anche.

+1

Grazie mille. Non ho notato che param. Sembrerà meglio. – Almaron

+0

La combinazione di ': prompt' e': include_blank' è veramente pulita, invece di una personalizzazione 'select'. Grazie –

1

Qualcosa di simile è accettabile a vostro avviso?

collection_select :field1, :field2, @models+[Model.new(name: "default_name")], :name, :id 
10

Probabilmente si può utilizzare selezionare invece:

f.select(:item_id, @items.collect {|p| [ p.name, p.id ] } + ['Or create a new one like','new'], {:include_blank => 'Please select a item'}) 
+0

Questo era proprio quello di cui avevo bisogno, GRAZIE! – Thomas

Problemi correlati