Rails 3 использует подход UJS, который позволяет обрабатывать ответы AJAX из кода JavaScript.
$("form").live("ajax:success", function(data, status, xhr){
$(".target").html(data.myHTML);
});
Как должно выглядеть представление в Rails 3 для заполнения объекта «данные», чтобы я мог проверить это из JavaScript?
Регулярный рендеринг с использованием "js.erb" или "js.haml" приводит к локальной переменной "data" data в JavaScript "undefined".
Конечно, в представлении я могу использовать некоторую глобальную переменную, например, следующую ("js.haml"):
- c = escape_javascript(render "search_result")
:plain
var ajaxResponse = "#{c}";
… И вызвать его из обработчика JavaScript, например:
$("form").live("ajax:success", function(data, status, xhr){
$(".target").html(ajaxResponse);
});
… но это нарушает инкапсуляцию.
В идеале можно использовать локальную переменную data.
Итак, как должен выглядеть вид?