如何显示所有帖子及其所有评论 - Ruby on Rails

时间:2015-05-13 23:25:06

标签: ruby-on-rails ruby-on-rails-4

我是铁杆新手,并且不知道如何在铁轨中实现这一目标。这可能是一个非常愚蠢的问题。但是我在RoR Codecademy课程中没有涉及它,也无法在其他地方找到答案。

所以我有两个表,帖子和评论有一对多的关系。一篇文章有​​很多评论。

我想显示所有帖子及其下面的所有评论。这样做的正确方法是什么?

2 个答案:

答案 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