Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Kaminari将两个系列结合在一起,并将标题放在两者之间_Ruby_Kaminari - Fatal编程技术网

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的最后一项之后出现一次