2010-05-05 9 views
6

Necesito producir un menú de selección con un valor predeterminado en la lista de <options>. Así es como necesito que se vea.Ruby on rails: menú de opciones de selección con el atributo de valor predeterminado

<select name="menu[parent_id]" id="menu_parent_id"> 
<option value="0">==None==</option> 
<option value="34">TEST</option> 
</select> 

Actualmente uso de este select ayudante en mi forma

<%= f.select(:parent_id, @parent_menus.collect {|p| [ p.name, p.id ] }, {:include_blank => '==None=='})%> 

el código anterior producen este; (value="")

<select name="menu[parent_id]" id="menu_parent_id"> 
<option value="">==None==</option> 
<option value="34">TEST</option> 
</select> 

¿Hay alguien aquí me puede mostrar una manera de agregar value="0" a la lista de opciones?

Respuesta

9
<%= f.select(:parent_id, [["==None==", 0]] + @parent_menus.collect {|p| [ p.name, p.id ] }) %> 
+0

aquí es lo que me pasa por eso, ' ' Realmente estoy buscando algo como esto ' ' – randika

+0

Lo siento, mi culpa. Olvidé uno []. Mira mi actualización. –

+0

¡Hooray funcionó! Muchas gracias, Simone. Voy a hacer esto como la respuesta. – randika

1

Trate

<%= f.select(:parent_id, options_for_select(["==None==", 0] + @parent_menus.collect {|p| [ p.name, p.id ] }, 0)) %> 
0

no sé esto es Rubí manera o no pero esto va a trabajar definietly

<%= f.select(:parent_id, "<option value='0'>Please select</option>"+options_for_select(@parent_menus.collect {|p| [ p.name, p.id ] }))%> 

editados. Para preseleccionado de acuerdo con el valor guardado en la base de datos supongo @usuario es su objeto contiene el valor de la base de datos para el siguiente ejemplo.

Pensamiento
<%= f.select(:parent_id, "<option value='0'>Please select</option>"+options_for_select(@parent_menus.collect {|p| [ p.name, p.id ] }, @user.id))%> 
+0

por favor revisa mi respuesta editada espero que ayude. – Salil

1

me gustaría añadir esto a cualquiera que quiera hacer un valor seleccionado por defecto que es uno de los objetos en el menú desplegable, en lugar de un valor 'none'. es decir, está editando un formulario que tiene un valor anterior seleccionado, y no desea perder ese valor anterior en su página de edición:

Suponiendo que tiene una matriz de padres en @parents y su formulario está vinculado a un objeto llamado @my_messed_up_family y @my_messed_up_family tiene un 'padre':

= f.label :parent_id, "Choose which of your parents is your father? 

= f.select :parent_id, options_from_collection_for_select(@parents.sort_by {|n| n.name}, "id", "name", :selected=>@my_messed_up_family.father.id)