按照ROR 的指南入门教程,我正在制作一个博客,其中包含两个模型 - 发布和评论 - 在 config/routes.rb 文件中具有以下关联:
resources :posts do
resources :comments
end
因此,view/posts/show.html.erb
出于显示原因,评论和评论表单会显示在博客页面上。但是,我一直在理解@post, @post.comments.build
以下代码片段中的含义:
<h2>Add a comment:</h2>
<%= form_for([@post, @post.comments.build]) do |f| %>
<div class="field">
<%= f.label :commenter %><br />
<%= f.text_field :commenter %>
</div>
<div class="field">
<%= f.label :body %><br />
<%= f.text_area :body %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
此外,在重构期间,作者已将代码移动以显示对view/comments/_comment.html.erb
部分的注释,并将其渲染为view/posts/show.html.erb
使用
<%= render @post.comments %>
现在,这将为集合app/views/comments/_comment.html.erb
中的每个评论呈现部分内容。@post.comments
当 render 方法遍历@post.comments
集合时,它将每个注释分配给与局部变量命名相同的局部变量,在这种情况下,注释随后在局部变量中可供我们显示。
问:rails 如何从上面的代码行推断部分名称和要传递给部分以显示注释的变量?
另外,您能否根据上述博客应用程序解释以下语句的含义。参考: http: //guides.rubyonrails.org/getting_started.html
The @post object is available to any partials rendered in the view because we defined it as an instance variable.