Jest to całkiem proste, to po prostu czuje się jak wielka sprawa, ponieważ jest nowy . Zasadniczo, z nowym dyskretny obsługuje JavaScript, szyny ujs skrypt naraża zbiór zdarzeń można przypisywać funkcji javascript do, są to:
- ajax: beforeSend - zwolniony przed wyślij występuje
- ajax: sukces - zwolniony po wystąpieniu wyślij zawiera odpowiedzi
- ajax: kompletne - zwolniony po wypadku sukcesu
- ajax: błąd - zwolniony, gdy występują błędy
wszystko co musisz zrobić, to napisać funk n (który zawijasz w $ document.ready), który z kolei wiąże niektóre anonimowe funkcje z każdym z tych zdarzeń lub tylko z wydarzeniami, którymi jesteś zainteresowany.
Załóżmy na przykład, że masz div, który chcesz umieścić dane odpowiedzi z identyfikatorem "response_data" i masz link z identyfikatorem "ajax_trigger". Coś takiego:
<%= link_to "My Link", some_model_path(@model_instance),
:remote => true, :html => {:id => "ajax_trigger"} %>
<div id="response_data">
</div>
Wszystko, co musisz zrobić, to zapewnić funkcję jak ten poniżej, aby umieścić odpowiedź od serwera do div:
$(document).ready(
function(){
$("a#ajax_trigger").bind("ajax:success",
function(evt, data, status, xhr){
//this assumes the action returns an HTML snippet
$("div#response_data").html(data);
}).bind("ajax:error", function(evt, data, status, xhr){
//do something with the error here
$("div#errors p").text(data);
});
});
Naprawdę, wszystko robisz z javascriptem zajmuje się odpowiedzią, gdy wraca z serwera. Naprawdę nie musisz robić nic specjalnego, aby zainicjować żądanie XHR, a także możesz bezpiecznie przechowywać tę metodę w pliku .js, który zostanie udostępniony jako zasób statyczny. Jeśli używasz Rails 3.1, powinieneś umieścić go w odpowiednio nazwanym pliku javascript, który odpowiada kontrolerowi. W kontrolerze należy się upewnić, że określono: layout => false w metodzie responds_with(), w ten sposób sterownik zwraca część lub szablon, który renderuje, a nie całą stronę. Ta konfiguracja działa również w przypadku akcji, które zwracają javascript do wykonania przez klienta, a także JSON, w zależności od typu danych określonego w żądaniu.
Znalazłem ten blogu, aby być bardzo pomocne: http://www.alfajango.com/blog/rails-3-remote-links-and-forms/
Pierwszy link na tej odpowiedzi jest wszystko, czego potrzebujemy. –