Kaminari分页只返回前25个结果而不是全部

问题描述 投票:0回答:2

我正在尝试缓存产品的请求。我使用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

结束

ruby-on-rails kaminari
2个回答
0
投票

你需要改变它。

@products = Kaminari.paginate_array(products.to_a).page(params[:page])

对此:

@products = Kaminari.paginate_array(products.to_a).page(params[:page]).per(products.count)

如果未指定大小,则每个大小的默认值为25。


0
投票

来自docs。

您可以使用Kaminari.configure方法覆盖这些值来配置以下全局默认值。

config.default_per_page = 100      # 25 by default

有一个方便的生成器,可以在config / initializers目录中生成默认配置文件。运行以下生成器命令,然后编辑生成的文件。

rails g kaminari:config
© www.soinside.com 2019 - 2024. All rights reserved.