joh*_*kes 3 pagination ruby-on-rails ruby-on-rails-3 kaminari
我不知道我做了什么,但是kaminari已经开始在我的应用程序中表现得很奇怪了.
在我的控制器中:
@producers = Producer.order(:name).page(params[:page])
Run Code Online (Sandbox Code Playgroud)
视图:
<%= paginate @producers %>
Run Code Online (Sandbox Code Playgroud)
结果是:
undefined method `num_pages' for #<ActiveRecord::Relation:0x000001026e6308>
Run Code Online (Sandbox Code Playgroud)
如果我在我的控制器中添加.per:
@producers = Producer.order(:name).page(params[:page]).per(25)
Run Code Online (Sandbox Code Playgroud)
我明白了
undefined local variable or method `per' for #<ActiveRecord::Relation:0x0000010928ef60>
Run Code Online (Sandbox Code Playgroud)
最后,奇怪的是,如果我移动.order(:name)到最后,它的工作原理:
@producers = Producer.page(params[:page]).order(:name)
Run Code Online (Sandbox Code Playgroud)
我猜我安装的其他宝石有一个page导致问题的范围或方法?
谢谢.
嗯,刚想通了.我安装了Active Admin.它will_paginate作为依赖项安装.
在最新的提交中Active Admin,will_paginate已被替换kaminari.
我改变了我的Gemfile以Active Admin从github 拉出来.will_paginate从我的包中删除,现在一切正常.您可以通过将以下行放入gemfile中来完成此操作:
gem "activeadmin", git: "https://github.com/gregbell/active_admin"
Run Code Online (Sandbox Code Playgroud)
我对另一个需要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
Run Code Online (Sandbox Code Playgroud)
把它放在初始化器中.
| 归档时间: |
|
| 查看次数: |
8630 次 |
| 最近记录: |