在js.erb文件中部分渲染

我正在尝试创build一个基于Ajax的评论表单,它会在提交时更新我的​​评论列表。 很基本的东西。

我有一个部分的comments/_single.html.haml有一个单一的<li>标签与基本的评论信息,这里是我的comments/create.js.erb文件(实际上这些是三个不同的testing文件合并成一个告诉你什么我的问题是):

 $('#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有一些问题。

One Solution collect form web for “在js.erb文件中部分渲染”

在Javascript代码中渲染partials时,应该像这样使用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') %>"); 

方法Escapes回车和JavaScript段的单引号和双引号ActionView :: Helpers :: JavaScriptHelper Rails文档

  • 如何在heroku中清空数据库
  • 如何在Rails 3中删除迁移文件
  • 如何更改Rails 3控制器中的视图文件的默认path?
  • 我如何供应Rails3 / Bundler的gem
  • 如何在rails中的命名空间中生成控制器
  • 为什么rails bootstrap这么慢,我能做些什么呢?
  • 在Rails 3中突出显示当前页面的最佳方法是什么? - 有条件地应用CSS类来链接
  • 为什么不`config.time_zone`似乎做任何事情?
  • 如何在rails html.erb文件中注释行?
  • 如何更改Rails 3中初始化器的加载顺序?
  • Ruby on Rails 3无法通过OSX上的套接字“/tmp/mysql.sock”连接到本地MySQL服务器