列出类别中的帖子

Fre*_*esh 2 ruby-on-rails

我有一个帖子模型和一个类别模型

我想在一个页面上按类别显示所有帖子的列表.

我正确地在每个模型中使用has和belongs_to.

我只是不知道如何在我看来展示它们.

我想要的是

分类名称

  • POST1
  • POST2
  • Post3

类别名称2

  • POST1
  • POST2
  • Post3

等等...

谢谢

mxg*_*grn 5

在你的控制器中设置@categories:

@categories = Category.find(:all, :include => :posts) # you may specify your conditions here
# :include is needed to avoid a query on each "category.posts" call later in the view
Run Code Online (Sandbox Code Playgroud)

然后在视图中:

<% for category in @categories %>
  <strong><%= category.name %></strong>
  <ul>
    <% for post in category.posts %>
      <li><%= post.name %></li>
    <% end %>
  </ul>
<% end %>
Run Code Online (Sandbox Code Playgroud)

  • 我添加:include =>:发布到Category.find调用以消除n + 1查询问题.这里的版本可以使用,但它会在每个类别的数据库中找到它的帖子.使用:include会导致ActiveRecord在生成SQL查询时执行连接. (2认同)