0

データベースからいくつかのアイテムをページ付けしようとしていますが、ページ付けの2ページ目に移動しようとすると、このエラーが発生します。

RangeError Exception: offset 25 and limit 25 are outside allowed range

これは、ページネーションを設定するコントローラーのコードです。

@activities = (current_user.followed_users.activities(:order => [:created_at.desc]) + current_user.followed_centers.activities(:order => [:created_at.desc])).all(:limit => 40)

unless (params[:page].nil?)
  @page = params[:page].to_i
end

unless (@page.nil?)
  @activities = Kaminari.paginate_array(@activities).page(@page).per(10)
else
  @activities = Kaminari.paginate_array(@activities).page(0).per(10)
end

クエリで返されるオブジェクトの数を40に制限してから、結果セットをページ分割しようとしましたが、範囲エラーが発生します。ここで何が問題なのかわかりません。最初のクエリから制限を取り除くと、これは正常に機能します。

これはターミナルの出力です:

RangeError (offset 25 and limit 25 are outside allowed range):
  lib/ct_gems/dm-core-1.2.0/lib/dm-core/query.rb:1298:in `get_relative_position'
  lib/ct_gems/dm-core-1.2.0/lib/dm-core/query.rb:592:in `slice!'
  lib/ct_gems/dm-core-1.2.0/lib/dm-core/query.rb:567:in `slice'
  lib/ct_gems/dm-core-1.2.0/lib/dm-core/collection.rb:1414:in `sliced_query'
  lib/ct_gems/dm-core-1.2.0/lib/dm-core/collection.rb:396:in `[]'
  app/controllers/users_controller.rb:64:in `stream'
  lib/ct_gems/dm-core-1.2.0/lib/dm-core.rb:263:in `block in repository'
  lib/ct_gems/dm-core-1.2.0/lib/dm-core/repository.rb:114:in `scope'
  lib/ct_gems/dm-core-1.2.0/lib/dm-core.rb:263:in `repository'

誰か助けてもらえますか?

4

1 に答える 1

1

これが役立つかどうかはわかりませんが、合計数を渡してみてください

@activities = Kaminari.paginate_array(@activities, total_count: 40 ).page(@page).per(10)

また、paginate_array を呼び出すことができる offset および limit パラメータもあり、これが役立つ場合があります。

*更新*

これはあなたを正しい道に導くかもしれません

https://github.com/amatsuda/kaminari/pull/160

https://github.com/amatsuda/kaminari/pull/111

于 2012-10-29T16:39:45.567 に答える