我正在尝试创建一个基于 ajax 的评论表单,它将在提交时更新我的评论列表。非常基本的东西。
我有部分comments/_single.html.haml
其中有一个<li>
带有基本评论信息的标签,这是我的comments/create.js.erb
文件(实际上这是三个不同的测试文件合并为一个,以向您展示我的问题是什么):
$('#comments ul.comments').append("<%= render :partial => 'comments/single', :locals => { :c => @comment } %>");
$('#comments ul.comments').append("<%= render :partial => 'comments/foobar' %>");
$('#comments ul.comments').append("foobar");
alert('foobar');
内容为comments/_foobar.html.haml
只是foobar
,里面没有html。
我的问题是前两行不起作用。我的开发服务器控制台中没有错误,对象检查器说注释代码已正确返回,但它们没有添加到我的注释列表中。第三行工作正常,第四行也工作正常。使用起来好像有一些问题render
.
在 Javascript 代码中渲染部分内容时,您应该使用 escape_javascript 方法,如下所示
$('#comments ul.comments').append("<%= escape_javascript render(:partial => 'comments/single', :locals => { :c => @comment }) %>");
该方法别名为 j,因此您也可以这样做
$('#comments ul.comments').append("<%= j render(:partial => 'comments/foobar') %>");
该方法对 JavaScript 段转义回车符以及单引号和双引号ActionView::Helpers::JavaScriptHelper Rails 文档 http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html#method-i-escape_javascript
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)