蒙古族分页

时间:2011-12-18 01:40:15

标签: pagination mongoid

我试过

@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

你如何与mongoid分页?

8 个答案:

答案 0 :(得分:10)

你应该使用Kaminari https://github.com/amatsuda/kaminari

答案 1 :(得分:4)

这对我来说很好用:

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

desc(:_id),以便可以先列出最新的帖子。

答案 2 :(得分:4)

仍然使用will_paginate也没关系。

此主题有同样的问题:undefined method `paginate' for Array on Rails 3 with mongoid

修复错误的要点是在控制器调用paginate库之前添加此行:

require 'will_paginate/array'

如果对整个项目使用mongoid,则应将其添加到默认配置文件中。

希望解释有用。

来自origin gem source的引用:https://github.com/mislav/will_paginate/wiki/Backwards-incompatibility位于“WillPaginate :: Collection”部分。

P / S:如果您的查询不是很大,这只是一个解决方法。如果您想获得更好的效果,请试试mongoid-pagination gemcustom will_pagination gem或其他支持Mongoid的分页宝石,例如kaminari

答案 3 :(得分:2)

有点晚了,但对于其他人来说,我发现'will_paginate_mongoid'

https://github.com/lucasas/will_paginate_mongoid

非常直接,让你简单地做

collection.skip(20).limit(10)

答案 4 :(得分:1)

愚蠢的事情,但在我添加了'mongoid-pagination'后,它在sinatra中对我有用  到app.rb

答案 5 :(得分:1)

使用以下gem。

非常有帮助。

https://github.com/lucasas/will_paginate_mongoid

答案 6 :(得分:0)

几年后发布,以防其他人面临同样的挑战。

kaminari-mongoid于2016年发布,目前正在维护。

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

Kaminiari对Mongoid的所有善意,包括对Mongoid::Criteria结果的适当处理,这可能是导致OP错误的原因。

答案 7 :(得分:0)

为更新答案,现在存在Pagy gem,它的性能(cpu / mem)也比will_paginate和kaminari高得多。这是migration guide