我正在使用rails 7中的kaminari来实现API的连接,但是当我试图看到一个与第一页不同的页面时,当我尝试访问"http://localhost:3000/products?page=3"“时,我会接受类型错误。
TypeError (no implicit conversion of Symbol into Integer)我的分页产品索引:
# GET /products
def index
page_number = params[:page].try(:[], :number)
per_page = params[:page].try(:[], :size)
@products = Product.all.page(page_number).per(per_page)
paginate json: @products
end有人知道怎么解决这个问题吗?
编辑:我创建了一个名为api_pagination.rb的初始化器,并安装在他身上:
ApiPagination.configure do |config|
config.page_param do |params|
params[:page][:number] if params[:page].is_a?(ActionController::Parameters)
end
config.per_page_param do |params|
params[:page][:size] if params[:page].is_a?(ActionController::Parameters)
end
end现在我可以访问"http://localhost:3000/products?page%5Bnumber%5D=2&page%5Bsize%5D=12“了,但在我看来它不对,或者这是正确的方式?
发布于 2022-08-01 02:44:38
也许你需要设置默认值?试着:
page_number = params[:page].try(:[], :number) || 1
per_page = params[:page].try(:[], :size) || 20如果不起作用,检查这些number和size参数中的内容,或者分享更多有关问题的信息,比如整个错误堆栈跟踪,更好的是完整的请求日志。
https://stackoverflow.com/questions/73187964
复制相似问题