Próbuję wywołać wywołanie zwrotne ajax: success dla zdalnego łącza. Jestem na Railsach 3.0.8 i jquery-rails 1.0.11. Uruchomiłem generator jquery, aby zainstalować javascripts. Zarówno jquery, jak i jquery_ujs są zawarte w moich ustawieniach domyślnych i mogę zweryfikować, czy są one zawarte na stronie.Railsy wywołania jQuery UJS nie wyzwalające
Oto mój javascript:
jQuery(function($) {
$("#deactivate")
.bind("ajax:success", function() {
alert("HELLO");
})
.bind("ajax:error", function() {
alert("GOODBYE");
}
);
});
Link:
= link_to 'Deactivate', activate_patient_path(patient), :id => 'deactivate', :class => "button button-red", :remote => true
Akcja Aktywacja:
def activate
patient = Patient.find(params[:id])
patient.do_not_call = !patient.do_not_call
if patient.save
render :nothing => true
else
render :status => 500, :nothing => true
end
end
ajax połączeń wydaje się być w porządku pracy. Akcja jest uruchamiana i widzę zmiany w bazie danych. Jednak wywołania ajaxowe nie są wywoływane. Nie mogę sprawić, żeby któryś z nich zadziałał. Mogę sprawić, aby inne wydarzenia, takie jak kliknięcie, działały idealnie.
Jeśli debugować rails_ujs w Firebug widzę, że następujący kod pobiera wybiegł z bloku Rails Ajax:
success: function(data, status, xhr) {
element.trigger('ajax:success', [data, status, xhr]);
}
Jestem zakłopotany. Jakieś pomysły?
Jeśli wykonam element = $ ("# activate"); element.trigger ("ajax: sukces"); w konsoli Mogę uzyskać wywołanie zwrotne, które wyzwoli. Z jakiegoś powodu po prostu nie działa z UJS. – anthonator
Korzystanie z Firebug, jeśli wstawię punkt przerwania w linii element.trigger ('ajax: success', [data, status, xhr]) w linii rails_ujs, a następnie bind $ ("# deactivate") do ajax: powodzenie po zatrzymaniu wywołania zwrotnego uruchomi się. Oddzwanianie będzie działało poprawnie, gdy kliknę link, dopóki nie odświeżę strony. Wygląda na to, że $ ("# deaktywuj") nie jest tym samym odniesieniem do elementu, na którym uruchamiany jest wyzwalacz. – anthonator