Монгоидная нумерация страниц - PullRequest
15 голосов
/ 18 декабря 2011

Я пытался

@posts = Post.page(params[:page]).per_page(10)

и

@posts = Post.paginate(:page => 1, :per_page => 10)    

но ни один из методов не работает

undefined method `page' for Post:Class

undefined method `paginate' for Post:Class

Как вы делаете пагинацию с монгоидом?

Ответы [ 7 ]

11 голосов
/ 21 декабря 2011

Вы должны использовать Kaminari https://github.com/amatsuda/kaminari

5 голосов
/ 12 сентября 2012

Это прекрасно работает для меня:

@posts = Post.paginate(:page => 1, :limit => 10).desc(:_id)

desc(:_id) добавлено, чтобы последние сообщения могли быть перечислены первыми.

4 голосов
/ 18 февраля 2014

Все еще использовать will_paginate тоже нормально.

Эта тема имеет ту же проблему: неопределенный метод `paginate 'для массива на Rails 3 с mongoid

Главное, что нужно исправить - добавить эту строку перед библиотекой вызова пагината контроллера:

require 'will_paginate/array'

Его следует добавить в файл конфигурации по умолчанию, если вы используете mongoid для всего проекта.

Надеюсь, что объяснение полезно.

Ссылка из источника источника: https://github.com/mislav/will_paginate/wiki/Backwards-incompatibility в разделе "WillPaginate :: Collection".

P / S: это просто обходной путь, если ваш запрос не очень большой. Если вам нужна лучшая производительность, давайте попробуем драгоценный камень mongoid-pagination , нестандартный камень will_pagination или другой драгоценный камень нумерации страниц, который поддерживает Mongoid, например kaminari .

2 голосов
/ 30 апреля 2013

Немного поздно, но для всех, кто ищет, я нашел 'will_paginate_mongoid'

https://github.com/lucasas/will_paginate_mongoid

Действительно прямо вперед и позволяет просто сделать

collection.skip(20).limit(10)
1 голос
/ 09 июля 2014

Используйте следующий самоцвет.

Очень полезно.

https://github.com/lucasas/will_paginate_mongoid

1 голос
/ 14 февраля 2013

глупость, но у меня это сработало в sinatra после того, как я добавил 'mongoid-pagination' в app.rb

0 голосов
/ 16 января 2018

Публикация через несколько лет, если кто-то еще столкнется с той же проблемой.

kaminari-mongoid был выпущен в 2016 году и в настоящее время поддерживается.

https://github.com/kaminari/kaminari-mongoid

Все добро Каминиари для Mongoid, включая надлежащую обработку Mongoid::Criteria результатов, что, возможно, и стало причиной ошибки ОП.

...