3

我不确定我做了什么,但 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>

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

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

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

谢谢。

4

4 回答 4

8

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

在 的最新提交中Active Adminwill_paginate已替换为kaminari.

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

gem "activeadmin", git: "https://github.com/gregbell/active_admin"
于 2011-08-02T22:00:33.203 回答
5

我对另一个需要 will_paginate 的 gem 有同样的问题。此问题已通过此代码片段解决,该代码片段取自 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

将其放入初始化程序中。

于 2012-07-12T14:07:44.247 回答
1

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

于 2011-12-02T22:14:30.547 回答
0

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

我找到的解决方案是指定此修订:

gem 'activeadmin', :git => 'git://github.com/gregbell/active_admin.git', :ref => '811f286fda3b6dfa91aa'
于 2011-08-04T01:05:34.733 回答