Rails 3 使用 UJS 方法,它允许处理来自 JavaScript 代码的 AJAX 响应。
$("form").live("ajax:success", function(data, status, xhr){
$(".target").html(data.myHTML);
});
Rails 3 中的视图应该如何填充“数据”对象,所以我可以检查是否来自 JavaScript?
使用“js.erb”或“js.haml”进行常规渲染会导致 JavaScript 中的“数据”局部变量“未定义”。
当然,在视图中,我可以使用一些全局变量,如以下(“js.haml”):
- c = escape_javascript(render "search_result")
:plain
var ajaxResponse = "#{c}";
…并从 JavaScript 处理程序中调用它,如下所示:
$("form").live("ajax:success", function(data, status, xhr){
$(".target").html(ajaxResponse);
});
…但它打破了封装。
理想的方法是使用“数据”局部变量。
那么,视图应该是什么样子?