渲染部分集合

时间:2013-12-02 04:02:29

标签: ruby-on-rails ruby-on-rails-4

Section 7.1 Rendering Partial Collections让我们循环遍历属于'post'的'comments'数组,并将部分渲染为结果。我无法理解这一点。

在“views / posts / show.html.erb”中,我们有以下代码:

<%= render @post.comments %>

由于@post有多个注释,因此以某种方式知道在views/comments/_comment.html.erb中使用partial。这怎么可能? Will Rails会将“评论”单独化为“评论”吗?

即使Rails知道将“评论”单独化为“评论”,Rails如何知道调查views/comments/_comment.html.erb而不是views/posts/_comment.html.erb

2 个答案:

答案 0 :(得分:2)

这是Rails魔力的一部分。因为您有一个comment.rb模型,可能是belongs_to :post,所以它知道@post.comments是一个评论集合。你也可以用它做很多事情。假设你想使用不同的部分,你可以做

# render a bunch of @images with a different partial
<%= render partial: 'images/_preview', collection: @images %> 

# render a partial with a different object than assigned (since images are looking for an 'image' variable inside of an _image file)
<%= render 'images/preview', preview: @image %>

所以......是的命名约定是Ruby'on Rails'的一部分。

答案 1 :(得分:0)

如果您是RoR的新手,我认为您前面有很多这样的问题;)我认为“渲染”方法没有为其输入提供任何“@ post.com”字符串,但是Comment对象的代理集合,所以这里没有字符串的单一化(uff)。在那之后它查看输入:“好的,评论集合,让我们看看在视图/评论/路径中是否有'_comment'部分......哦,这就是它!” )自动化!