昨天学习rails的ajax操作时遇到的一个问题,
页面将from_tag的route选项设为true,代表向rails控制器方法发送的是js格式的ajax异步请求,
控制方法处理完成后渲染同名的js.erb模板,
但是模板里的js代码就是不起作用,
今天早上头脑清醒时调了一会儿,
看到rails中文指南里写到这样一行代码:$("
<%=
escape_javascript(render
@user
)
%>
").appendTo("#users");
我找葫芦画瓢改写了自己的js.erb代码:
$("#cart").html("<%= escape_javascript(render(:partial => "cart", :object => @cart)) %>");
然后重试就可以了,关键是要在渲染子模板render之前加escape_javascript.
在rails的api上查了一下这个方法的说明(下附),意思是为javascript片段去掉字符串中的回车符,单引号,双引号。可以简写为j()。这个方法专门用于返回javascript响应时。
Escapes carriage returns and single and double quotes for JavaScript segments.
Also available through the alias j(). This is particularly helpful in JavaScript responses, like:
$('some_element').replaceWith('<%=j render 'some/element_template' %>');