我有一个包含两个项目集的页面。
return !(city.length() < 3 || city.length() > 20)
我知道如何将它们组合在一起以与Kaminari分页,但是我需要在return city.length() >= 3 && city.length() <= 20
的项目开始之前放置def index
@collection1 = Model.collection1
@collection2 = Model.collection2
end
标头(如果有的话)。
页面将是这样的:
<h1>collection 2</h1>
我很难找到一种方法来做到这一点。有什么想法吗?
答案 0 :(得分: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
要显示 Collection 2 标题,请创建以下帮助程序。
def display_collection_2_heading?
@collection1.present? && ((@collection1.count / @collection1_paginated.limit_value)+1) == @collection1_paginated.current_page
end
此帮助程序确保标题仅在 @ collection1 的最后一项之后才会出现一次。