Kilka rzeczy musi być obecny na tej pracy, w tym: zdalne => true flagę na element wyzwalający The respond_to : Flaga js w definicji klasy kontrolera, trasa, widok częściowy, a na końcu jquery do faktycznego renderowania części dynamicznej musi być zawarty w osobnym pliku .html.js.
Poniższe przykłady dotyczą fikcyjnej metody "render_partial_form" kontrolera "someajax".
1) Dodaj: zdalne => true flagę elementu wyzwalającego
umieścić: zdalne => true flagę na link tag lub formularza w pliku .html.erb (Widok) dla element, który chcesz wywołać wywołanie AJAX, jak
<%= form_tag("/someajax", method: 'post', :remote => true) do %>
z: remote => true, szyny nie zostaną automatycznie przełączać widoki, które pozwala jQuery być uruchamiany zamiast. Można go użyć z tagiem form_tag, tag_linii lub innymi typami tagów.
2) Dodaj „respond_to: HTML, JS” na górze kontrolera
Na szczycie definicji klasy kontrolera, trzeba teraz określić, że kontroler może odpowiedzieć na javascript, jak również jak HTML:
class SomeajaxController < ApplicationController
respond_to :html, :js
...
def render_partial_form
@array_from_controller = Array.new
...
end
end
w tym przykładzie jest zmienna są przekazywane z kontrolera do widoku: tablica wybranych opcji lista zwanych @array_from_controller
.
3) Route czasownik http metody kontrolera za
Ponieważ chciałem Wysłany formularz do wyzwalania wywołania AJAX, że kierowane czasownika pocztowy dla mojego kontrolera do widoku render_partial_form.
post 'someajax' => 'someajax#render_partial_form
Metoda kontroler określa def render_partial_form
meczów z nazwą widzenia _render_partial_form.html.erb
więc nie ma potrzeby, aby wywołać akcję renderowania ze sterownika.
4) Tworzenie częściowy widok
Częściowy widok powinny mieć taką samą nazwę jako metody kontrolera i zaczynają się od podkreślenia: _render_partial_form.html.erb
<h3>Here is the partial form</h3>
<%= form_tag("/next_step", method: 'post') do %>
<%= label_tag(:data, "Some options: ") %>
<%= select_tag(:data, options_for_select(@array_from_controller.transpose[0].collect)) %>
<%= submit_tag('Next') %>
<% end %>
5) Utwórz plik JQuery
Wyrażenia JQuery wyzwalają renderowanie formularza. Zastąp "render_partial_form" rzeczywistą nazwą metody kontrolera i częściowego widoku. Efekt slideDown jest opcjonalny "eye candy". Utwórz plik z .js.erb rozszerzeniu i taką samą nazwę jak kontrolerze:
render_partial_form.js.erb
$('#render_partial_form').html("<%= escape_javascript (render partial: 'render_partial_form') %>");
$('#render_partial_form').slideDown(350);
W nowszych wersjach Railsów potrzebujesz klejnotu odpowiadającego, aby zaimplementować poziom kontrolera response_to: html,: js – emery
Fakt, że częściowe oznaczenie było takie samo jak metoda AJAX, jest tym, co mnie uratowało. Mam nadzieję, że inni będą w stanie znaleźć tę wspaniałą odpowiedź. – justinraczak
Dzięki. Naprawdę miałem problem z uruchomieniem tego do pracy nad innym projektem ... Zastanawiam się, czy dane: {type:: html} muszą znajdować się na etykiecie form_tag, jak na odpowiedź mltsy. – emery