Kaminari将两个系列组合在一起,并将它们放在两者之间

时间:2017-10-07 08:26:16

标签: ruby kaminari

我有一个包含两个项目集的页面。

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>

我很难找到一种方法来做到这一点。有什么想法吗?

1 个答案:

答案 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 的最后一项之后才会出现一次。