蒙古族分页

Vya*_*nov 15 pagination mongoid

我试过了

@posts = Post.page(params[:page]).per_page(10)
Run Code Online (Sandbox Code Playgroud)

@posts = Post.paginate(:page => 1, :per_page => 10)    
Run Code Online (Sandbox Code Playgroud)

但这两种方法都无效

undefined method `page' for Post:Class

undefined method `paginate' for Post:Class
Run Code Online (Sandbox Code Playgroud)

你怎么用mongoid做分页?

Vya*_*nov 12

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

  • 使用 mongoid 时我遇到了同样的错误。没有页面方法。 (2认同)
  • 使用Rails 4.0.0,Mongoid 4.0.0,Kaminari非常适合我. (2认同)

小智 5

这对我来说很好:

@posts = Post.paginate(:page => 1, :limit => 10).desc(:_id)
Run Code Online (Sandbox Code Playgroud)

desc(:_id) 已添加,以便可以首先列出最新帖子。


Hoa*_* Le 5

仍然使用 will_paginate 也可以。

这个线程有同样的问题:未定义的方法`paginate' for Array on Rails 3 with mongoid

修复错误的要点是在控制器调用分页库之前添加这一行:

require 'will_paginate/array'
Run Code Online (Sandbox Code Playgroud)

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

希望解释有帮助。

来自原始 gem 源的参考:https : //github.com/mislav/will_paginate/wiki/Backwards-incompatibility在“WillPaginate::Collection”部分。

P/S:如果您的查询不是很大,这只是一种解决方法。如果你想要更好的性能,让我们尝试mongoid-pagination gem自定义 will_pagination gem或其他支持 Mongoid 的分页 gem 像kaminari