2011-02-02 17 views
6

Szyny 2.3.5, Ruby 1.86Nie można zapisać wybranej on-line

Nie udało mi się tego rozgryźć. "Onchange" w poniższym wyborze nie jest zapisywany (napis nie jest zapisywany w HTML). Nie widziałem odniesienie do składni inności wyjątkiem niektórych starszych przykładach onchange jest otoczona w nawiasach:

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

wyniki:

<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> 


Gdybym po prostu zmiana "f.select" to "select_tag" to onchange jest napisane poprawnie (nie, że chcę to zrobić):

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

skutkuje:

<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> 


jestem brakuje różnicę między onChange składni dla wybranej i select_tag pomocnika?

Dzięki!

Odpowiedz

22

To jest to, co chcesz:

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

z wybranymi podpis metoda wygląda tak select(object, method, choices, options = {}, html_options = {}). onchange jest opcją html, ponieważ nie masz żadnych opcji, potrzebujesz pustego hasha, aby Twoja ostatnia zmiana była brana jako html_option.

+0

Dzięki - bardzo docenione! Tęskniłem, widząc, że potrzebuję tam miejsca. – Reno

Powiązane problemy