首页 > 解决方案 > 使用 ruby​​ on rails 测试 kaminari 参数是否存在

问题描述

我是 Ruby 新手,我的任务是为 get 方法添加分页,但我尝试测试参数 (page) 和 (per_page) 是否存在,如果它们不存在,它应该返回数据库中的所有数据,因为默认情况下 kaminari 只返回 25 页。

这是我的功能

def index
  if page.present? && per_page.present?
    @domains = Domain.accessible_by(access_token).page(page).per(per_page)
  else
    @domain = Domain.accessible_by(access_token).all
  end
  render json: @domain
end

在它返回200 OK响应但为空

标签: rubykaminari

解决方案


控制器方法通过params对象接收请求参数。变量pageper_page未定义,将引发异常undefined local variable, etc.

还有几件事:

  • 我猜这个@domain变量是印刷错误,@domains应该改用。
  • 由于iffork 的两个表达式都返回分配给@domains变量的值,因此可以简化。

综上所述,这里是改进的控制器方法:

def index
  @domains = if params[:page].present? && params[:per_page].present?
               Domain.accessible_by(access_token)
                     .page(params[:page])
                     .per(params[:per_page])
             else
               Domain.accessible_by(access_token).all
             end

  render json: @domains
end

推荐阅读