2011-10-12 34 views

回答

3
@posts = Post.limit(20).order('created_at desc') 
@photos = Photo.limit(20).order('created_at desc') 
@recent_items = (@posts + @photos).sort_by(&:created_at) 

<% @recent_items.each do |item| %> 
    <% if item.class == "Photo" %> 
    <%= image_tag item.url %> 
    <% else %> 
    <%= item.title %> 
    <% end %> 
<% end %> 

或者,使用group_by做這樣的:

@recent_items = (@posts + @photos).group_by(&:created_at) 

<% @recent_items.each do |date, items| %> 
    Date: <%= date %> 
    <% items.each do |item| %> 
     Show information here. 
    <% end %> 
<% end > 

我認爲邏輯移動到一個幫手,如果我是你的機碼。

+0

太棒了!但我如何分頁呢? – everm1nd

+1

這取決於你用於分頁的內容。發佈一個單獨的問題。 – bricker

+0

是否曾經有一篇關於分頁的後續文章? –

1

最好就是做這個是數據庫。

我只想說:多態性+數據庫視圖。

創建包含您從兩個郵政照片需要的列,包括列數據庫視圖「」包含模型(你需要它的多態性)的名稱。將此視圖稱爲「list_items」。然後創建一個名爲「ListItem」的模型。然後,您可以像使用其他任何方式一樣使用此模型,對它進行分頁並隨時做出任何其他操作。

ListItem.order("created_at > ?", Date.yesterday).page(params[:page]) 

而且不要忘記配置polymorphic association

然而,這一切是很容易與listable寶石來完成。一探究竟!