使用Rails上的红宝石测试kaminari参数是否存在

时间:2018-10-09 09:18:00

标签: ruby 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响应,但为空

1 个答案:

答案 0 :(得分:1)

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

还有几件事:

  • 我猜想@domain变量是打印错误,应该改用@domains
  • 由于if fork的两个表达式都返回一个分配给@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