2012-04-05 26 views

Respuesta

45

Ben,

Depende de cómo se está construyendo sus opciones para la selección. Si lo estás haciendo como el siguiente código, simplemente pasa una cadena al: incluye el espacio en blanco.

select("post", "person_id", Person.all.collect {|p| [ p.name, p.id ] }, {:include_blank => 'Some text here'}) 

Si está configurando las opciones con un options_for_select(), entonces usted puede hacer algo como lo siguiente:

options_for_select([["Dollar", "$"], ["Kroner", "DKK"]]) 

Con el valor = "" siendo el segundo valor de la matriz y el nombre que aparece en el menú desplegable es el primero. Así, en su caso, se puede cambiar la segunda respuesta a este aspecto:

options_for_select([["Some text here", ""], ["Dollar", "$"], ["Kroner", "DKK"]]) 
+2

Esto no fue preguntado, pero si desea que la opción en blanco para no ser seleccionable puede agregar ': include_blank => true, disabled: "", seleccionado: "", marcador de posición: "Foo Bar" ' – MCB

+0

Georgi tiene una mejor respuesta, a continuación. en lugar de 'include_blank', use' prompt: 'Which person?' 'Tendrá un valor en blanco, pero el texto de visualización que proporcione. 'include_blank' solo acepta un booleano; no acepta una cadena para mostrar. –

1

Usted puede hacerlo de forma manual mediante la adición de ["Your Text", ""] al comienzo de la matriz pasada a options_for_select, o añadir "<option value=\"\">#{h("Your Text"}</option>" al comienzo de la cadena que se pasa a select_tag.

31

En lugar de

:include_blank => true 

Trate

:include_blank => "your text here" 

si esto es lo que busca.

+2

no realmente, eso establece la etiqueta, no el valor (atributo) – zappan

+0

Aunque no fue la respuesta a la pregunta, fue la respuesta a mi pregunta, ya que quería establecer la etiqueta en blanco, saludos. –

+0

Esto no funcionará para los métodos 'select_tag' pero funcionará con los métodos' select'. (Y, sí, son _ diferentes). Usar una cadena para el valor en 'include_blank' solo proporcionará una opción en blanco sin cadena. Use 'prompt' en ese caso. –

22

Si está utilizando la función select_tag(name, option_tags = nil, options = {}), la opción correcta es :prompt => "Some text" en lugar de establecer un valor de cadena para select

+3

Me llevó demasiado tiempo darme cuenta de que es diferente para select_tag que para una selección tradicional. Gracias. – zarazan

+0

etiqueta se comporta de manera muy diferente en todo el lugar. me dispara todo el tiempo, también. – Dudo

+2

Esto es absolutamente correcto y un poco complicado de entender. 'select_tag' ** aceptará ** una opción' include_blank', pero NO mostrará el texto que pasa como el valor de esa opción. Necesitas usar 'prompt' para eso. Gracias @Georgi! –

Cuestiones relacionadas