34

次のような配列 @level1 があります。

[[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 を使用してこれにページネーションを実行するにはどうすればよいですか?

4

5 に答える 5

82

https://github.com/mislav/will_paginate/blob/master/lib/will_paginate/array.rbを参照してください。

あなたがそれを試す直前require 'will_paginate/array'に、それはうまくいくでしょう。私だったら、config/initalizers/will_paginate_extensions.rbすぐにどこからでも利用できるようにします。

于 2012-11-02T00:15:49.027 に答える
27

WillPaginate::Collectionもちろん、コレクション全体で任意のページネーションを作成するために使用できます。と呼ばれる配列を仮定しvaluesます:

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

その後、ビューヘルパー@valuesに渡すことを含め、他のWillPaginateコレクションと同じように扱うことができます。will_paginate

于 2012-11-01T23:40:08.830 に答える
6

collectionRails プロジェクトで指定された配列

will_paginate ~>3.0.5

collection.paginate(page: params[:page], per_page: 10)

配列値のページネーションを返します。

require 'will_paginate/array'コントローラーの上に忘れずに。

于 2016-08-02T15:22:55.453 に答える