Исключение RangeError: смещение 25 и ограничение 25 выходят за пределы допустимого диапазона Пагинация Kaminari

Я пытаюсь разбить некоторые элементы из моей базы данных, однако получаю эту ошибку, когда пытаюсь перейти на вторую страницу моей разбивки на страницы:

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'

Кто-нибудь может помочь, пожалуйста?


person Hugs    schedule 29.10.2012    source источник
comment
Это странно, кажется, работает, когда я устанавливаю ограничение на 50..   -  person Hugs    schedule 29.10.2012


Ответы (1)


Не уверен, что это поможет, но вы можете попробовать передать общий счет в

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

Есть также параметры смещения и ограничения, с которыми вы можете вызвать paginate_array, что может помочь.

*ОБНОВЛЕНИЕ

Это также может привести вас на правильный путь

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

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

person Purple Hexagon    schedule 29.10.2012
comment
Спасибо за попытку, но когда я это делаю, в разбивке на страницы появляется более 10 элементов, а когда я перехожу на страницу 2, там те же элементы. - person Hugs; 29.10.2012