我是铁杆新手,并且不知道如何在铁轨中实现这一目标。这可能是一个非常愚蠢的问题。但是我在RoR Codecademy课程中没有涉及它,也无法在其他地方找到答案。
所以我有两个表,帖子和评论有一对多的关系。一篇文章有很多评论。
我想显示所有帖子及其下面的所有评论。这样做的正确方法是什么?
答案 0 :(得分:3)
有两种方法可以做到这一点:
首先:你可以在你的帖子控制器动作中这样做(假设:索引):
def index
@posts = Post.all
end
在 index.html.erb
中<% @posts.each do |post|%>
# Your post attribute like name etc
<% post.comments.each do |comment|%>
# Your post attribute like name etc
<% end %>
<% end %>
第二次:在您的帖子控制器操作中执行:
def index
@posts = Post.all.includes(:comments)
end
在 index.html.erb
中<% @posts.each do |post|%>
# Your post attribute like name etc
<% post.comments.each do |comment|%>
# Your post attribute like name etc
<% end %>
<% end %>
上述两种方式的区别在于,当您执行“post.comments”时,第一种方式始终存在数据库调用,但在第二种情况下,只有两个数据库调用,即“ Post.all.includes(:comments)“,在视图部分没有数据库调用,因此您需要使用哪种方式。
答案 1 :(得分:0)
如果帖子有很多评论,那么:
post = Post.find(1)
post.comments.each do |comment|
# do something with each comment here
end