Rails魔术迭代在表面局部

时间:2017-01-17 05:55:28

标签: ruby-on-rails ruby

Rails Guide中,部分是以“app / views / comments / _comment.html.erb”的名称构建的,并且通过将下面的代码放在文章的show视图中,Rails知道要遍历每个评论并使用正确的部分。怎么知道的?我尝试将部分名称更改为除了单一形式的注释之外的其他内容,但它不起作用。这是某种类型的Rails魔法我应该记住还是有解释?

<%= render @article.comments %>

我也尝试渲染'comments/comment'而它不起作用,但为什么'comments/form'稍后会在指南中使用?

2 个答案:

答案 0 :(得分:2)

这是使用Rails约定的一些简写。

这是写同样事情的长篇形式。

<% @article.comments.each do |comment| %>
  <%= render partial: 'comment', locals: { comment: comment } %>
<% end %>

您也可以在渲染中使用集合。

<%= render partial: 'comment', collection: @article.comments %>

您可以阅读指南中的选项;

Layouts and rendering

以及此处的实施文档;

Partial Renderer

答案 1 :(得分:1)

来自documentation

  

部分在渲染集合时非常有用。通过:collection选项将集合传递给partial时,将为集合中的每个成员插入一次partial:

在您的示例中,<%= render @article.comments %>是撰写<%= render partial: "comment", collection: @article.comments %>

的简写