我正在使用 Ransack 进行过滤,而 will_paginate 用于分页,似乎我在组合两者时遇到了问题。
分析我的应用程序的内存问题我看到我的类别控制器在每次调用时都从数据库加载所有条目。
def index
@q = Category.all_cached.paginate(:page => params[:page], :per_page => 30).ransack(params[:q])
@categories = @q.result(distinct: true)
end
为了获得每个页面的唯一条目,我尝试了以下更改:
def index
@q = Category.paginate(:page => params[:page], :per_page => 30).ransack(params[:q])
@categories = @q.result(distinct: true)
end
问题是现在分页不再起作用了。 错误说:找不到具有'id'= x的类别,即使有足够的记录可用。
我有两个问题:
答案 0 :(得分:0)
尝试这种方式:
def index
@q = Category.paginate(page: params[:page], per_page: 30).ransack(params[:q])
@categories = @q.result(distinct: true).includes(:products)
end