2010-12-29 6 views

Respuesta

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

Como respondido a la pregunta, esto es para Rails 2.3. Para Rails 3, ver la respuesta de Prathan Thananart.

139

mayor parte del tiempo, que no quieren añadir nada a la matriz directamente; cualquiera de ellos es una solución más limpia:

  • Uso :prompt => "Placeholder" si desea que el marcador de posición para aparecer solo cuando el atributo es nulo en el momento de prestar el formulario. Se seleccionará de forma predeterminada, pero no se guardará nada si el usuario envía. Si el atributo ya está poblado [posiblemente porque a) hay un valor predeterminado ob) es un formulario de edición], el elemento de marcador de posición se omitirá de la lista por completo.
  • Use :include_blank => "Placeholder" si desea incluir el marcador de posición en la lista representada en todo momento.
+0

Totalmente de acuerdo. La respuesta marcada funciona pero es muy hacky. Esta es la opción incorporada para hacer lo que quieres. EDITAR: Acabo de ver que la respuesta original era para 2.3. Aún así, combinaría ambas respuestas. –

+3

': prompt' no funciona para mí – Uko

+0

Si lo hace: include_blank: true: insertará un espacio en blanco vacío. – mjnissim

Cuestiones relacionadas