未定义的# kaminari“page”错误的方法页面。 rails_admin

我正在使用rails_admin。 当我去某些资源。 通过typin url

localhost:3000/admin/rule 

比它给我这个错误。 代码是:

 scope = Rule.all scope.page(1).per(2) 

。 上面的代码在rails_admin gem.in一个名为mongoid.rb的文件中写入,放在adapter文件夹中。 完整的日志是:

 NoMethodError (undefined method `page' for #): mongoid (2.4.8) lib/mongoid/criteria.rb:385:in `method_missing' /home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/kaminari-809105ad782a/lib/kaminari/models/mongoid_extension.rb:11:in `page' /home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/lib/rails_admin/adapters/mongoid.rb:37:in `all' /home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/app/controllers/rails_admin/main_controller.rb:127:in `get_collection' /home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/app/controllers/rails_admin/main_controller.rb:39:in `list_entries' /home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/lib/rails_admin/config/actions/index.rb:30:in `block (2 levels) in ' 

我该怎么做才能解决这个错误?

你不能在Array上调用Kaminari方法,因为Rule.all将返回Array

所以你必须做这样的事情: Rule.page(1).per(2)

以下是Kaminari用法的文档和示例:

https://github.com/amatsuda/kaminari

现在我一直在使用Mongoid来解决这个问题一段时间。 有时在RailsAdmin中刷新页面会修复它。

我发现问题是Kaminari的钩子没有在我的环境中初始化,所以依赖于Kaminari的扩展方法的模型没有它们可用。

我只是从Kaminari的栏杆中取出以下行并将其放在我的rails_admin初始化程序的顶部:

 Kaminari::Hooks.init 

现在事情似乎对我有用了。 但是,我不知道为什么ActiveSupport回调没有运行该代码。

用这个

 Kaminari.paginate_array(Rule.all).page(params[:page]) 

Kader的解决方案很棒! 唯一的问题是我发现我必须添加.per才能使其正常工作。

 Kaminari.paginate_array(Rule.all).page(params[:page]).per(PER_PAGE_RECORDS)