Монгологическая разбивка на страницы

Я пробовал

@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

Как вы делаете разбивку на страницы с мангоидом?

Ответы

Ответ 2

Это отлично работает для меня:

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

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

Ответ 3

По-прежнему использовать will_paginate также хорошо.

Этот поток имеет такую ​​же проблему: undefined метод` paginate 'для Array on Rails 3 с mongoid

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

require 'will_paginate/array'

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

Надеемся на полезное объяснение.

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

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

Ответ 4

Немного поздно, но для кого-то другого, я нашел 'will_paginate_mongoid'

https://github.com/lucasas/will_paginate_mongoid

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

collection.skip(20).limit(10)

Ответ 5

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

Ответ 7

Проводя несколько лет спустя, если кто-то сталкивается с тем же вызовом.

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

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

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