【问题标题】:undefined method page for #<Array:0xc347540> kaminari "page" error. rails_admin#<Array:0xc347540> kaminari "page" 错误的未定义方法页面。 rails_admin
【发布时间】:2012-05-28 03:08:33
【问题描述】:

我正在使用 rails_admin。当我去某个资源时。通过输入网址

localhost:3000/admin/rule 

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

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

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

NoMethodError (undefined method `page' for #<Array:0xcea7408>):
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 <class:Index>'

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 mongoid kaminari rails-admin


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我一直在使用 Mongoid 时断时续地遇到这个问题。有时在 RailsAdmin 中刷新页面会修复它。

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

      我只是从Kaminari's railtie 中取出以下行并将其放在我的rails_admin initializer 的顶部:

      Kaminari::Hooks.init
      

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

      【讨论】:

      • 修复了与 mongo 和 rails_admin 相同的问题 - 2 年过去了,问题仍然存在
      • 我的数组出现了同样的错误,除了current_page 而不是page。这种方法仍然有效吗?另外我没有使用 Rails_admin
      • 为我修复了在引擎中使用所需的 mongoid 模型。
      【解决方案3】:

      使用这个

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

      【讨论】:

      • 这是最好的答案!
      【解决方案4】:

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

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

      这里是 Kaminari 用法的文档和示例:

      https://github.com/amatsuda/kaminari

      【讨论】:

        猜你喜欢
        • 2014-02-23
        • 1970-01-01
        • 2012-10-24
        • 2011-10-18
        • 2015-10-22
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多