2009-12-08 5 views
2

У меня есть пост модель и модель категориисписок сообщений в категории

Я хочу, чтобы показать список на все сообщения от категории все на одной странице.

Я использую правильно и правильно в каждой модели.

Я просто не могу определить, как показать их на мой взгляд.

Хотите мне нужно

Категория Название

  • Post1
  • Post2
  • Post3

Категория Name2

  • Post1
  • Post2
  • Post3

и т.д ...

Благодаря

ответ

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 

Тогда в представлении:

<% for category in @categories %> 
    <strong><%= category.name %></strong> 
    <ul> 
    <% for post in category.posts %> 
     <li><%= post.name %></li> 
    <% end %> 
    </ul> 
<% end %> 
+0

Вы также можете использовать 'метод group_by' на' Enumerable' для кода вида. http://api.rubyonrails.org/classes/Enumerable.html#M002570 – samg

+2

Я бы добавил: include =>: сообщения в вызов Category.find, чтобы устранить проблему с запросом n + 1. Версия здесь будет работать, но она попадет в базу данных для каждой категории, чтобы получить ее сообщения. Использование: include заставляет ActiveRecord выполнять соединение, когда он генерирует SQL-запрос. – madlep

+0

@madlep, это правда, спасибо, отредактировав ответ – mxgrn

Смежные вопросы