Ruby on rails rails中具有资源层次结构的([@post,@post.comments.build])帮助程序的表单_
下面,我正在制作一个包含两个模型的博客——Post和Comment——在config/routes.rb文件中具有以下关联: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> <
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]