2010-05-05 9 views
6

Devo produrre un menu di selezione con un valore predefinito nell'elenco di <options>. Ecco come ho bisogno sembra.Ruby on rails: selezionare il menu opzioni con attributo valore predefinito

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

Attualmente io uso questo select aiutante nella mia forma

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

il codice qui sopra produrre questo; (value="")

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

Qualcuno qui mi può mostrare un modo per aggiungere value="0" alla lista delle opzioni?

risposta

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

Qui è ciò che ho per questo, ' 0 ' Attualmente sto cercando qualcosa di simile a questo ' ' – randika

+0

Siamo spiacenti, colpa mia. Ne ho dimenticato uno []. Controlla il mio aggiornamento. –

+0

Hooray ha funzionato! grazie un gruppo Simone. Lo farò come risposta. – randika

1

Prova

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

Non so questo è il modo di Ruby o no ma questo sarà definietly lavorare

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

modificato. Per preselezione in base al valore di salvataggio nel database presumo che @user sia l'oggetto che contiene il valore del database per il seguente esempio.

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

si prega di controllare la mia risposta modificata speranza che aiuta. – Salil

1

pensiero vorrei aggiungere a chiunque cerchi di fare un valore selezionato di default che è uno degli oggetti in discesa, al contrario di un valore di 'none'. Ad esempio, stai modificando un modulo con un valore precedente selezionato e non vuoi perdere quel valore precedente nella pagina di modifica:

Supponendo che tu abbia una schiera di genitori in @parents e il tuo modulo sia legato ad un oggetto chiamato @my_messed_up_family, e @my_messed_up_family ha 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)