Ruby / Rails – kaminari undefined方法分页错误
我不确定我做了什么,但是kaminari已经开始在我的应用程序中表现得很奇怪了。
在我的控制器中:
@producers = Producer.order(:name).page(params[:page])
视图:
结果是:
undefined method `num_pages' for #
如果我在我的控制器中添加.per:
@producers = Producer.order(:name).page(params[:page]).per(25)
我明白了
undefined local variable or method `per' for #
最后,奇怪的是,如果我将.order(:name)
移动到最后,它可以工作:
@producers = Producer.page(params[:page]).order(:name)
我猜我安装的其他一些gem有一个page
范围或方法导致问题?
谢谢。
嗯,刚想通了。 我安装了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"
我对另一个需要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
把它放在初始化器中。
要解决这个问题,请包含gem 'kaminari'
并删除will_paginate
。 由于我已经使用了will_paginate
,我刚刚更新了当前对kaminari的will_paginate调用。 它们与实现非常相似,并且易于更改。
我尝试了johnnycakes的解决方案,但它一直给我在仪表板上的堆栈级别太深的错误(类似于https://github.com/gregbell/active_admin/issues/157 )
我找到的解决方案是指定此修订:
gem 'activeadmin', :git => 'git://github.com/gregbell/active_admin.git', :ref => '811f286fda3b6dfa91aa'