Ruby Kaminari将两个系列结合在一起,并将标题放在两者之间
我有一个包含两个项目集合的页面Ruby Kaminari将两个系列结合在一起,并将标题放在两者之间,ruby,kaminari,Ruby,Kaminari,我有一个包含两个项目集合的页面 def index @collection1 = Model.collection1 @collection2 = Model.collection2 end 我知道如何将它们组合在一起以使用Kaminari进行分页,但是我需要在@collection2项开始之前放置@collection2标题(如果有) 页面应该是这样的: ..Item from collection 1.. ..Item from collection 1.. ..Item fro
def index
@collection1 = Model.collection1
@collection2 = Model.collection2
end
我知道如何将它们组合在一起以使用Kaminari进行分页,但是我需要在@collection2
项开始之前放置@collection2
标题(如果有)
页面应该是这样的:
..Item from collection 1..
..Item from collection 1..
..Item from collection 1..
<h1>collection 2</h1>
..Item from collection 2..
..Item from collection 2..
。集合1中的项。。
..收藏1中的项目。。
..收藏1中的项目。。
收藏2
..收藏2中的项目。。
..收藏2中的项目。。
我很难想出一个办法来做这件事。有什么想法吗?我想出了以下解决方案
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
要显示集合2标题,请创建以下帮助程序
def display_collection_2_heading?
@collection1.present? && ((@collection1.count / @collection1_paginated.limit_value)+1) == @collection1_paginated.current_page
end
此帮助程序确保标题仅在@collection1的最后一项之后出现一次。我想出了以下解决方案
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
要显示集合2标题,请创建以下帮助程序
def display_collection_2_heading?
@collection1.present? && ((@collection1.count / @collection1_paginated.limit_value)+1) == @collection1_paginated.current_page
end
此帮助程序确保标题仅在@collection1的最后一项之后出现一次