我正在尝试缓存产品的请求。我使用Kaminari宝石进行分页但由于某种原因我无法在我的视图页面上看到所有产品。它似乎只占据前25名并列出了那些。
def index
cache_key = Product::CACHE_KEY_PREFIX + params.map{|k,v| "[#{k}-#{v}]"}.join("-")
@products = Rails.cache.fetch(cache_key, expires_in: 30.minutes) do
search_params = params.permit(:product_type,:format).to_h.symbolize_keys
if search_params[:product_type]
products = Product.by_product_type(params[:product_type])
elsif params[:filters].present?
filters = params[:filters].try(:symbolize_keys)
products = Product.where(filters)
else
products = Product.all
end
byebug #at this point products count is 43
products = products.page(params[:page])
byebug #count is now 25
@products = Kaminari.paginate_array(products.to_a).page(params[:page])
@products #count is 25
end
respond_to do |format|
format.html
format.json
end
结束
你需要改变它。
@products = Kaminari.paginate_array(products.to_a).page(params[:page])
对此:
@products = Kaminari.paginate_array(products.to_a).page(params[:page]).per(products.count)
如果未指定大小,则每个大小的默认值为25。
来自docs。
您可以使用Kaminari.configure方法覆盖这些值来配置以下全局默认值。
config.default_per_page = 100 # 25 by default
有一个方便的生成器,可以在config / initializers目录中生成默认配置文件。运行以下生成器命令,然后编辑生成的文件。
rails g kaminari:config