2017-10-07 5 views
1

두 개의 콜렉션이있는 페이지가 있습니다.카미 마리는 두 개의 콜렉션과 두 개의 콜렉션을 결합합니다.

def index 
    @collection1 = Model.collection1 
    @collection2 = Model.collection2 
end 

나는 그러나 내가 @collection2 시작 (있는 경우)의 항목 전에 <h1>collection 2</h1> 헤더를 배치해야합니다, 미나리와 페이지를 매기 함께 그들을 결합하는 방법을 알고 있어요.

..Item from collection 1.. 
..Item from collection 1.. 
..Item from collection 1.. 
<h1>collection 2</h1> 
..Item from collection 2.. 
..Item from collection 2.. 

임 힘든 시간이 작업을 수행 할 수있는 방법을 알아내는 데 :

페이지는 다음과 같이 될 것이다. 어떤 생각?

답변

0

나는 다음 해결책을 제시했다.

def index 
    @collection1 = Model.collection1 
    @collection2 = Model.collection2 
    @collection1_paginated = @collection1.page(params[:page]) 
    @collection2_paginated = Kaminari.paginate_array(@collection1 + @collection2).page(params[:page]) 
    .padding(@collection1_paginated.size) 
    .take(@collection1_paginated.limit_value - @collection1_paginated.size) 
    @collection1_or_collection2 = Kaminari.paginate_array(@collection1 + @collection2).page(params[:page]) 
end 

그리고 당신이 할 수있는 뷰에서

:

= render partial: 'model', collection: @collection1_paginated 
- display_collection_2_heading? 
    h1 collection 2 
= render partial: 'model', collection: @collection2_paginated 

= paginate @collection1_or_collection2 

컬렉션이 다음 도우미를 만들 제목 표시합니다.

def display_collection_2_heading? 
    @collection1.present? && ((@collection1.count/@collection1_paginated.limit_value)+1) == @collection1_paginated.current_page 
end 

이 도우미는 만 collection1 @에서 마지막 항목 후 1 시간 만 간다 표제를 확인합니다.