使用will_paginate在Ruby中分页数组

Pi *_*rse 33 ruby ruby-on-rails will-paginate ruby-on-rails-3 kaminari

我有一个@ level1数组,如下所示:

[[3.0, 4, 2], [2.0, 48, 3], [2.1, 56, 4], ............]
Run Code Online (Sandbox Code Playgroud)

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

@temp1 = @level1.paginate(:page => params[:page])
Run Code Online (Sandbox Code Playgroud)

但它会引发以下错误:

undefined method `paginate' for [[3.0, 4, 2], [2.0, 48, 3], [2.1, 56, 4]]:Array
Run Code Online (Sandbox Code Playgroud)

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

Phi*_*rom 80

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

require 'will_paginate/array'在你尝试之前它会工作得很好.如果它是我,我会说它,config/initalizers/will_paginate_extensions.rb所以它可以立即和从任何地方.

  • 这是一个更好的解决方案.谢谢! (2认同)

Chr*_*ald 26

当然,您可以使用WillPaginate::Collection跨集合构造任意分页.假设一个数组叫values:

@values = WillPaginate::Collection.create(current_page, per_page, values.length) do |pager|
  pager.replace values
end
Run Code Online (Sandbox Code Playgroud)

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


Fra*_*ero 5

给出collectionRails项目中的数组

will_paginate ~>3.0.5

collection.paginate(page: params[:page], per_page: 10)
Run Code Online (Sandbox Code Playgroud)

返回数组值的分页.

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

  • 我不认为数组可以调用“paginate”。这是我得到的错误:`NoMethodError: undefined method `paginate' for #<Array:0x007fc983759000>` (2认同)