2014-01-27 33 views
1

我想弄清楚如何循環兩個對象數組,並在視圖中以混合順序顯示它們 - 按它們的創建日期排列。循環通過兩個對象數組,按日期創建

這裏是我當前的控制器代碼,只有根據你所在的類別中顯示的帖子,或者基於搜索查詢:

def browse 
    @user = current_user 
    if params[:category] 
    @category = Category.find(params[:category]) 
    @posts = @category.posts.page(params[:page]) 
    else 
    @posts = Post.search(params) 
    end 
end  

在視圖中,我只是遍歷並輸出這些像所以:

- if @posts 
    - @posts.each do |post| 
    = post.name 
    = post.content 

我想怎麼辦,是不是通過實例變量@posts參考柱......我想創建一個新的變量(即:@everything) - 拉動對象來自Post類和Comment類,將它們彈出到相同的數組中,並允許我循環GH和輸出分別各我認爲,像這樣:

理想控制器:

def browse 
    @user = current_user 
    if params[:category] 
    @category = Category.find(params[:category]) 
    @everything = @category.everything(params[:page]) # ... combination of comments and posts 
    else 
    @everything = Everything.search(params) 
    end 
end  

理想視圖:

- if @everything 
    - @everything.each do |e| 
    - if e.type == 'post' 
     = e.name 
     = e.content 
    - else 
     = e.comment 

任何幫助/指導理解。我只是不確定如何處理這個問題。

回答

2

你會做這種類型的事情(讓你開始)

def browse 
    @user = current_user 
    @everything = @category.posts | @category.comments 
end 

在視圖

%ul= render @everything 

確保有一個觀點/評論/ _comment.html.haml和views/posts/_post.html.haml文件。

或者你可以呈現一個特定部分和處理在那裏

%ul= render :partial => shared/everything_item, :collection => @everthing 
任何差異