【问题标题】:Ruby/Rails - kaminari undefined method pagination errorsRuby/Rails - kaminari 未定义的方法分页错误
【发布时间】:2011-10-18 15:28:46
【问题描述】:

我不确定我做了什么,但 kaminari 在我的应用中开始表现得很奇怪。

在我的控制器中:

@producers = Producer.order(:name).page(params[:page])

查看:

<%= paginate @producers %>

结果:

undefined method `num_pages' for #<ActiveRecord::Relation:0x000001026e6308>

如果我在控制器中添加 .per:

@producers = Producer.order(:name).page(params[:page]).per(25)

我明白了

undefined local variable or method `per' for #<ActiveRecord::Relation:0x0000010928ef60>

最后,奇怪的是,如果我将.order(:name) 移到最后,它会起作用:

@producers = Producer.page(params[:page]).order(:name)

我猜我安装的其他一些 gem 有一个 page 范围或导致问题的方法?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 pagination kaminari


    【解决方案1】:

    嗯,刚刚想通了。 我安装了Active Admin。它安装了will_paginate 作为依赖项。

    Active Admin 的最新提交中,will_paginate 已替换为 kaminari

    我将 Gemfile 更改为从 github 提取 Active Adminwill_paginate 已从我的捆绑包中删除,现在一切正常。您可以通过将以下行放入您的 gemfile 来做到这一点:

    gem "activeadmin", git: "https://github.com/gregbell/active_admin"
    

    【讨论】:

    • 你是如何从 github 中提取“Active Admin”的?
    【解决方案2】:

    我对另一个需要 will_paginate 的 gem 有同样的问题。此问题已通过此代码 sn-p 解决,该代码取自 active_admin wiki 页面:

    if defined?(WillPaginate)
      module WillPaginate
        module ActiveRecord
          module RelationMethods
            def per(value = nil) per_page(value) end
            def total_count() count end
          end
        end
        module CollectionMethods
          alias_method :num_pages, :total_pages
        end
      end
    end
    

    把它放在一个初始化器中。

    【讨论】:

      【解决方案3】:

      要解决此问题,请包含 gem 'kaminari' 并删除 will_paginate。因为我已经在使用will_paginate,所以我刚刚更新了我当前对 kaminari 的 will_paginate 调用。它们的实现非常相似,并且很容易更改。

      【讨论】:

        【解决方案4】:

        我尝试了 johnnycakes 的解决方案,但它一直在仪表板上显示堆栈级别太深的错误(类似于 https://github.com/gregbell/active_admin/issues/157

        我找到的解决方案是指定这个版本:

        gem 'activeadmin', :git => 'git://github.com/gregbell/active_admin.git', :ref => '811f286fda3b6dfa91aa'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-27
          • 2015-10-22
          • 2014-02-23
          • 1970-01-01
          • 2012-05-28
          • 1970-01-01
          • 1970-01-01
          • 2018-01-05
          相关资源
          最近更新 更多