未定义的# 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用法的文档和示例:
现在我一直在使用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)