使用will_paginate在Ruby中分页数组

我有一个数组@水平1,看起来像这样:

[[3.0, 4, 2], [2.0, 48, 3], [2.1, 56, 4], ............] 

我想在这个数组上应用分页,这样每个页面一次只显示几行。 我试过这个:

 @temp1 = @level1.paginate(:page => params[:page]) 

但它会引发以下错误:

 undefined method `paginate' for [[3.0, 4, 2], [2.0, 48, 3], [2.1, 56, 4]]:Array 

如何使用will_paginate对此进行分页?

当然,你可以使用WillPaginate::Collection在集合上构build任意的分页。 假设一个名为values的数组:

 @values = WillPaginate::Collection.create(current_page, per_page, values.length) do |pager| pager.replace values end 

然后,您可以像处理任何其他WillPaginate集合一样处理@values ,包括将它传递给will_paginate视图助手。

https://github.com/mislav/will_paginate/blob/master/lib/will_paginate/array.rb

在试用之前只require 'will_paginate/array' ,它就可以正常工作。 如果是我的话,我会把它放在config/initalizers/will_paginate_extensions.rb这样它就可以config/initalizers/will_paginate_extensions.rb使用。

给定一个Rails项目中的collection数组

 will_paginate ~>3.0.5 collection.paginate(page: params[:page], per_page: 10) 

返回数组值的分页。

不要忘记在控制器的顶部require 'will_paginate/array'

这是我的例子,基于@ chris-heald的回答

 products = %w(i love ruby on rails) @products = WillPaginate::Collection.create(params[:page], params[:per_page], products.length) do |pager| pager.replace products[pager.offset, pager.per_page] end