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
?
答案 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'部分......哦,这就是它!” )自动化!