2011-02-02 16 views
6

Rails 2.3.5, Ruby 1.86Seleziona onchange non viene scritto

Non sono stato in grado di capirlo. Il 'onchange' nella selezione qui sotto non viene scritto (nessun onchange scritto nell'HTML). Non ho visto un riferimento alla sintassi essere diversi se non in alcuni esempi più anziani l'onchange è immerso tra parentesi:

<%= f.select :directory_id, options_for_select(@directories, @directory_to_select), :onchange => 'folder_lookup()' %> 

risultati in:

<select id="contact_directory_id" name="contact[directory_id]"> 
<option value="2">test_1</option> 
<option value="4">test_2</option> 
<option value="33" selected="selected">test_3</option> 
</select> 


Se ho semplicemente cambiamento "f.select" a "select_tag" l'onchange è scritto correttamente (non che io voglia farlo comunque):

<%= select_tag :directory_id, options_for_select(@directories, @directory_to_select), :onchange => 'folder_lookup()' %> 

risultati in:

<select id="contact_directory_id" name="directory_id" onchange="folder_lookup()"> 
<option value="2">test_1</option> 
<option value="4">test_2</option> 
<option value="33" selected="selected">test_2</option> 
</select> 


mi manca una differenza sintassi per onchange tra un aiutante di selezione e select_tag?

Grazie!

risposta

22

Questo è ciò che si vuole:

<%= f.select :directory_id, options_for_select(@directories, @directory_to_select), {}, :onchange => 'folder_lookup()' %> 

con selezionare la firma del metodo assomiglia a questo select(object, method, choices, options = {}, html_options = {}). onchange è un html_option, dato che non hai opzioni, hai bisogno di un hash vuoto in modo che il tuo ultimo onchange sia preso come html_option.

+0

Grazie - molto apprezzato! Ho perso totalmente la vista di aver bisogno di un segnaposto lì. – Reno

Problemi correlati