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
相关产品推荐
相关产品推荐

