Для людей с подобной проблемой может также помочь посмотреть исходный код для удаленных помощников в исходном коде Rails 2.3.x.
В моем случае я хотел выяснить, что делать с параметром ': update', например:
remote_form_for(@obj, :update => "new_obj", :before => "some js code") do |f|
Мне нужно было найти функциональность обновления в код удаленной_функции .
Что касается моей конкретной проблемы, похоже, что невозможно получить эквивалент :update
с помощниками Rails 3 UJS. rails.js
в Rails 3 упаковывает :remote => true
запросы с Ajax.Request(...)
, тогда как функция :update
в Rails 2 включает Ajax запросы с Ajax.Updater(...)
. Для людей, которые хотят заменить функцию :update
в Rails 2, я вижу 2 варианта:
Переключитесь на jquery-rails, чтобы вы могли получить доступ к ответу на запрос Ajax с помощью следующего кода:
$("#elem").bind("ajax:complete", function(et, e){
$("#results").html(e.responseText);
});
Напишите свой собственный код на основе прототипов, чтобы захватить форму и отправить ее через ajax, используя Ajax.Updater(...)
вместо Ajax.Request
. НЕ используйте :remote => true
, так как это попытается использовать Ajax.Request
.
Дополнительное примечание : я играл с объектом обратного вызова, предоставленным в событии ajax:complete
$('new_obj').observe('ajax:complete', function(request){
console.info(request);
});
Объект request
, по-видимому, нигде не содержит ответа. Это довольно массивно, поэтому я могу ошибаться. Хотелось бы надеяться, что это поможет кому-то еще, пытающемуся перейти с Rails 2 на 3.