我正在观看mckenzie https://www.youtube.com/watch?v=BI_VnnOLSKY的rails教程,并且无法理解他如何使评论适用于每个帖子。 _form partial看起来像这样:
<%= form_for([@post, @post.comments.build]) do |f| %>
<p>
<%= f.label :name %>
<%= f.text_field :name %>
</p>
<p>
<%= f.label :description %>
<%= f.text_area :description %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
那他为什么要打电话给这个[@ post,@ post.comments.build] ??
然后他为_comments做了另一个部分看起来像这样:
<div>
<h3><%= comment.name %></h3>
<p><%= comment.description %></p>
</div>
那么,他怎么能够只是呼唤&#34; comment.name&#34;没有使用@符号,如果没有循环,如@ comment.each do | comment |
然后他像这样在post / show.html.erb中呈现所有内容:
<h2><%= @post.comments.count %> Comments</h2>
<%= render @post.comments %>
在第二行中,如何才能将注释作为一个方法来调用_comment partial?
最后继承人评论控制器如何:
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(comment_params)
redirect_to post_path(@post)
end
非常感谢!
答案 0 :(得分:0)
当您使用render
将数组传递给render @post.comments
时,会发生一些魔法并且rails会使用_comment
部分来渲染每个注释。它全部在documentation for CAST
中描述。