2010-12-29 10 views

risposta

12
<%= select_tag(:services, 
       Service.all.collect { |c| [c.id, c.name] }. 
       insert(0, "Select a Service"))%> 

Come risposto alla questione, questo è per Rails 2.3. Per Rails 3, vedi la risposta di Prathan Thananart.

139

maggior parte del tempo, non si desidera aggiungere nulla alla matrice direttamente; uno di questi è una soluzione più pulita:

  • Usa :prompt => "Placeholder" se si desidera che il segnaposto di presentarsi solo quando l'attributo è nullo al momento il modulo viene reso. Sarà selezionato per impostazione predefinita, ma nulla verrà salvato se l'utente invia. Se l'attributo è già compilato [probabilmente perché a) c'è un valore predefinito o b) è un modulo di modifica], l'elemento segnaposto verrà omesso dall'elenco interamente.
  • Utilizzare :include_blank => "Placeholder" se si desidera includere il segnaposto nell'elenco di rendering in qualsiasi momento.
+0

Totalmente d'accordo. La risposta segnata funziona ma è molto hacky. Questa è l'opzione integrata per fare ciò che vuoi. EDIT: Ho appena visto che la risposta originale era 2.3. Tuttavia, combinerei entrambe le risposte. –

+3

': prompt' non funziona per me – Uko

+0

Se si esegue: include_blank: true -it inserirà uno spazio vuoto. – mjnissim

Problemi correlati