Przeglądałem wszystkie pytania i odpowiedzi na SO na ten temat, ale nadal nie mogę wykonać mojego scenariusza. Chcę wywołać akcję przycisku kliknięcia po wybraniu opcji menu rozwijanego; wydaje się być prosty i powinien być bardzo powszechny w AJAX.wybierz i zmień w formularzu Ruby na szynach
Oto stosowne fragmenty mojego kodu:
<%= form_for(@test, :html => {:id => "form_id", :name => "MyForm", :remote => "true"}) do |form| %>
<%= form.label "Menu1" %>
<%= form.select (:Menu1, [["Option1","value1"],["Option2","value2"]], :html_options=>{:onChange=>"javascript: this.form.apply_button_name.click();"}) %>
<!-- more select menus and text fields here -->
<div class="actions">
<%= form.submit "Apply", :name => "apply_button_name", :remote => "true" %>
</div>
<% end %>
użyłem. „Remote =>«true»zarówno dla postaci i przycisku, ponieważ jest to jedyny sposób, aby uzyskać AJAX działa Próbowałem też z jawnymi "html_options" i "javascript:", po tym jak przejrzałem kilka odpowiedzi na SO, które sugerowały, ale to nie pomogło.Spróbowałem również na Select, i onClick zamiast na Change, ale wciąż nie ma szczęścia.
Wygenerowane HTML jest następujący:
Menu1
<select id="test_Menu1" name="test[Menu1]"><option value="value1">Option1</option>
<option value="value2" selected="selected">Option2</option></select>
Jak widać, w kodzie HTML nie ma obsługi zdarzenia onChange; CZEMU? Czy ktoś widzi, co robię źle?
Dzięki za pomoc.
Dzięki rabusmar, który pomógł, ale gdy wybiorę opcja1, kontroler dostaje wartość2 i vice versa. Dodałem trzecią opcję i wygląda na to, że kontroler nie dostaje opcji, którą właśnie wybrałem, ale poprzedniej! Dlaczego to robi? Sprawdziłem to, dodając do kontrolera "@ test.Menu1 =" + @ test.Menu1.to_s + "\ n". – rh4games
Jest tak, ponieważ wartość nie została ustawiona podczas wysyłania formularza. Możesz użyć 'setTimeout' w swojej procedurze, aby wysłać poprawną wartość. – rabusmar
Czy mogę zapytać, jak odnieść się do kodu JavaScript poza tym plikiem, zamiast wbudowanego kodu JavaScript? – Orz