2009-12-08 68 views
2

我有一個樁模型和類別模型

我想顯示一個列表中的所有在一個頁面上按類別的所有信息。

我正確地在每個模型中使用has和belong_to。

我只是無法找到如何在我看來顯示他們。

想我需要的是

類別名稱

  • POST1
  • POST2
  • Post3

類別名稱2

  • 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

您也可以在Enumerable上使用'group_by'方法來查看代碼。 http://api.rubyonrails.org/classes/Enumerable.html#M002570 – samg 2009-12-08 07:13:42

+2

我會添加:包括=>:發送到Category.find調用來消除n + 1查詢問題。這裏的版本可以工作,但它會打到每個類別的數據庫以獲得它的帖子。使用:include會導致ActiveRecord在生成SQL查詢時進行連接。 – madlep 2009-12-08 11:50:05

+0

@madlep,這是真的,謝謝,編輯答案 – mxgrn 2009-12-08 16:38:34