Ruby on rails 在js.erb文件中呈现部分
我正在尝试创建一个基于ajax的评论表单,它将在提交时更新我的评论列表。非常基本的东西 我有一个部分的Ruby on rails 在js.erb文件中呈现部分,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在尝试创建一个基于ajax的评论表单,它将在提交时更新我的评论列表。非常基本的东西 我有一个部分的comments/_single.html.haml,它有一个带有基本评论信息的/code>标记,下面是我的comments/create.js.erb文件(实际上,这是三个不同的测试文件合并成一个,向您展示我的问题): $('#comments ul.comments')。追加('comments/single',:locals=>{:c=>@comment}%>); $(“#comments
comments/_single.html.haml
,它有一个带有基本评论信息的/code>标记,下面是我的comments/create.js.erb
文件(实际上,这是三个不同的测试文件合并成一个,向您展示我的问题):
$('#comments ul.comments')。追加('comments/single',:locals=>{:c=>@comment}%>);
$(“#comments ul.comments')。追加(“'comments/foobar”%”);
$('#comments ul.comments')。附加(“foobar”);
警报(“foobar”);
comments/_foobar.html.haml
的内容只是foobar
,里面没有html。
我的问题是前两行不行。我的dev服务器控制台中没有错误,objectinspector说注释代码返回正确,但它们没有添加到我的注释列表中。第三行很好,第四行也很好。使用render
在Javascript代码中呈现部分时,似乎存在一些问题,您应该使用escape\u Javascript方法,如下所示
$('#comments ul.comments').append("<%= escape_javascript render(:partial => 'comments/single', :locals => { :c => @comment }) %>");
$('#comments ul.comments')。追加('comments/single',:locals=>{:c=>@comment})%>”;
此方法别名为j,因此您也可以执行此操作
$('#comments ul.comments').append("<%= j render(:partial => 'comments/foobar') %>");
$('#comments ul.comments')。追加('comments/foobar')%>”;
该方法对JavaScript段转义回车、单引号和双引号
感谢大家不要忘记escape_Javascript方法。简化版本中的局部变量发生了什么变化
$('#comments ul.comments').append("<%= j render(:partial => 'comments/foobar') %>");