Rails如何渲染部分

时间:2010-12-25 19:04:11

标签: ruby-on-rails ruby-on-rails-3

我目前能够在JS中呈现部分内容:

$("#cmtList_<%= @commentable.id %>").prepend("<%=escape_javascript(render :partial =>"comments/comment", :locals => {:comment => @comment})%>");

上述作品在渲染/返回一条新评论时会膨胀。

现在我想重用相同的部分(保持DRY),但是能够将注释数组作为@Comments传递,并让Rails使用相同的部分循环遍历所有@comments记录(1或更多),我尝试了这个,但它错了:

$("#cmtList_<%= @commentable.id %>").prepend("<%=escape_javascript(render :partial => "comments/comment", :collection => {:comment => @comments})%>");

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:3)

在escape_javascript中尝试这个:

render :partial => "comments/comment", :collection => @comments

文档说这也应该有效(对我来说太神奇了):

render @comments

从这里检查“3.4.5渲染集合”: http://guides.rubyonrails.org/layouts_and_rendering.html

答案 1 :(得分:1)

尝试:

$("#cmtList_<%= @commentable.id %>").prepend("<%=escape_javascript(render :partial => "comments/comment", :collection => @comments)%>");

将查找局部变量“comment”。

了解更多信息:http://guides.rubyonrails.org/layouts_and_rendering.html