我有一个类别。如何打印所有子类别的文章没有额外的宝石?轨道

时间:2014-05-23 23:06:32

标签: ruby-on-rails ruby

这是我的代码。 我参加第一类考试 - 请不要。

  // Controller
  @categories = Category.find(1).subcategories # Works exellent
  @articles = []
  @categories.each do |category|
     @articles[category.id] = category.articles
  end

  // View
  <% @categories.each do |category| %>
      <h2><%= category.title %></h2>
      <ul>
          <% @articles[category.id].each do |article| %>
             <li><a href="<%= article.slug %>"><%= article.title %></a></li>
          <% end %>
      </ul>
  <% end %>

这是我的输出(其中'vel','in','sit' - 子类别名称):

vel
[nil, nil, nil, nil, nil, nil, #<ActiveRecord::Associations::CollectionProxy []>, #<ActiveRecord::Associations::CollectionProxy []>, #<ActiveRecord::Associations::CollectionProxy []>]
in
[nil, nil, nil, nil, nil, nil, #<ActiveRecord::Associations::CollectionProxy []>, #<ActiveRecord::Associations::CollectionProxy []>, #<ActiveRecord::Associations::CollectionProxy []>]
sit
[nil, nil, nil, nil, nil, nil, #<ActiveRecord::Associations::CollectionProxy []>, #<ActiveRecord::Associations::CollectionProxy []>, #<ActiveRecord::Associations::CollectionProxy []>] 

我有正确的工作协会:

Catogory:

has_many :articles
has_many :subcategories
has_one :parent

belongs_to :category

我阅读了很多文档并找到了一些有用的宝石(awesome_nested_set,ancestry),但是想知道没有额外的宝石怎么做

1 个答案:

答案 0 :(得分:1)

你可以写得更清洁:

# Controller
@categories = Category.find(1).subcategories.includes(:articles)

# View
<% @categories.each do |category| %>
  <h2><%= category.title %></h2>
  <ul>
    <% category.articles.each do |article| %>
      <%= link_to article.title, article.slug %>   # Do you really use slug for url? 
    <% end %>
  </ul>
<% end %>