在js.erb文件中渲染部分

mba*_*jur 42 ruby-on-rails ruby-on-rails-3

我正在尝试创建一个基于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');
Run Code Online (Sandbox Code Playgroud)

内容comments/_foobar.html.haml只是foobar,里面没有html.我的问题是前两行不起作用.我的开发服务器控制台中没有错误,对象检查器表示注释代码已正确返回但它们未添加到我的注释列表中.第三行工作正常,第四行工作正常.看起来使用时存在一些问题render.

Sup*_*o93 111

在Javascript代码中渲染部分内容时,应该使用escape_javascript方法,就像这样

$('#comments ul.comments').append("<%= escape_javascript render(:partial => 'comments/single', :locals => { :c => @comment }) %>");
Run Code Online (Sandbox Code Playgroud)

此方法别名为j,因此您也可以执行此操作

$('#comments ul.comments').append("<%= j render(:partial => 'comments/foobar') %>");
Run Code Online (Sandbox Code Playgroud)

方法Escapes回车以及JavaScript段的单引号和双引号 ActionView :: Helpers :: JavaScriptHelper Rails docs

  • 简化版中的局部变量发生了什么 (6认同)