在 rails 上使用 ruby 测试 kaminari 参数是否存在

Test if kaminari params exist using ruby on rails

我是 Ruby 的新手,我的任务是为 get 方法添加分页,但我尝试测试参数 (page) 和 (per_page) 是否存在,如果它们不存在它应该 return 数据库中的所有数据,因为默认情况下 kaminari return 只有第 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

它 return 一个 200 OK 响应但是空

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

还有几件事:

  • 我猜 @domain 变量打印错误,应该使用 @domains 代替。
  • 因为 if 的两个表达式 fork return 一个赋值给 @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