我不确定我做了什么,但是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
范围或方法导致问题?
感谢。
答案 0 :(得分:8)
嗯,刚才想出来了。
我安装了Active Admin。它安装了will_paginate
作为依赖项。
在Active Admin
的最新提交中,will_paginate
已替换为kaminari
。
我更改了我的Gemfile以从github中提取Active Admin
。 will_paginate
已从我的捆绑包中移除,现在一切正常。您可以通过将以下行放入gemfile中来完成此操作:
gem "activeadmin", git: "https://github.com/gregbell/active_admin"
答案 1 :(得分: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
将其放入初始化程序中。
答案 2 :(得分:1)
要解决此问题,请添加gem 'kaminari'
并删除will_paginate
。由于我已经使用will_paginate
,我刚刚更新了当前对kaminari的will_paginate调用。它们与实现非常相似,并且很容易改变。
答案 3 :(得分:0)
我尝试了johnnycakes的解决方案,但它一直在仪表板上给我堆栈级别太深的错误(类似于https://github.com/gregbell/active_admin/issues/157)
我找到的解决方案是指定此修订:
gem 'activeadmin', :git => 'git://github.com/gregbell/active_admin.git', :ref => '811f286fda3b6dfa91aa'