Ruby on rails rails中具有资源层次结构的([@post,@post.comments.build])帮助程序的表单_

Ruby on rails rails中具有资源层次结构的([@post,@post.comments.build])帮助程序的表单_,ruby-on-rails,form-for,Ruby On Rails,Form For,下面,我正在制作一个包含两个模型的博客——Post和Comment——在config/routes.rb文件中具有以下关联: resources :posts do resources :comments end 因此,出于显示原因,评论和评论表单会显示在博客的view/posts/show.html.erb页面上。然而,我一直在理解@post、@post.comments.build在以下代码片段中的含义: <h2>Add a comment:</h2> <

下面,我正在制作一个包含两个模型的博客——Post和Comment——在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 %>
现在,对于
@post.comments
集合中的每个注释,这将在
app/views/comments/_comment.html.erb
中呈现部分注释。当render方法在
@post.comments
集合上迭代时,它会将每个注释分配给一个名为与partial相同的局部变量,在本例中,该局部变量可以在partial中显示

问:rails如何推断部分名称和要传递给部分的变量,以显示上面代码行中的注释

另外,你能解释一下下面的陈述对于上述博客应用程序意味着什么吗。参考:


第一个问题。

[@post,@post.comments.build]
是什么意思

基本上,这是实例化将在表单中生成的内容。
@post
,它还将构建
@post.comments
。但这似乎是不必要的,我认为您可以通过以下方式实现:

<%= form_for @post do |f| %>
更新

啊,好吧,我不知道你指的是什么形式。这是一个具体的例子:

[@post, @post.comments.build]

是指注释模型。但据说该评论的父对象是
@post
。因此,您特别提到的注释模型是
@post
的子对象,它将建立在与该
@post
关联的注释数组之上或附加到该数组中

你能看到我下面的问题并回答吗。Thanx提前了很多时间。啊。我懂了。删除下面的答案。谢谢。此外,如果它是嵌套的三个级别,即用户、帖子、评论,那么评论模型的形式是什么?这是您的评论模型:
[@post,@post.Comments.build]
<%= form_for @post do |f| %>
<%= render :partial => 'comments/sweet_comment_partial_name', :collection => @post.comments %>
[@post, @post.comments.build]