You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kaminari分页报错:undefined method `total_pages' 求助

解决Kaminari分页失效的问题

问题根源

你在AdminsController#index里先给@orders赋值了带Kaminari分页方法的查询对象,但随后用@q.result.order(created_at: :desc)覆盖了变量——这个新赋值的对象只是普通的ActiveRecord::Relation,没有Kaminari注入的total_pages等分页方法,所以视图调用paginate @orders时会报错。

修复代码

把Kaminari的page和per方法追加到最终的查询链末尾,替换原来的两次赋值:

# AdminsController#index
@orders = @q.result.order(created_at: :desc).page(params[:page]).per(5)

额外注意事项

  • 确认Gemfile已添加gem 'kaminari',执行过bundle install,并重启了Rails服务器(未重启服务器可能导致Kaminari的方法未被正确注入)
  • 如果@q.result返回的是数组而非ActiveRecord::Relation(比如手动转换过),需要改用Kaminari的数组分页方式:
    @orders = Kaminari.paginate_array(@q.result.order(created_at: :desc)).page(params[:page]).per(5)
    
  • 确保搜索逻辑(比如用了Ransack的话)没有把查询对象转换成数组,保持@q.result为ActiveRecord::Relation类型

内容的提问来源于stack exchange,提问作者uma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:22:01