我有一个RoR 4应用程序,我用它作为后端API。我在搜索用户时尝试实现分页,所以我在控制器中定义了以下方法:
def search
params['page'] = 1 if params['page'].nil?
pageNumber = params['page']
params['size'] = 10 if params['size'].nil?
users = User.filter(filtering_params)
number_of_users = users.count
response = {
number_of_users: number_of_users,
users: users.paginate(page: pageNumber, size: params['size'])
}
respond_with response
end
def filtering_params
params.slice(:_s)
end
问题是我的应用程序总是返回1作为pageNumber,即使我添加一个参数?例如page = 2。你们知道可能出现什么问题吗?
答案 0 :(得分:0)
params['page'] = 1 if params['page'].nil?
pageNumber = params['page']
如果params['page']
为零,则pageNumber
为Integer
,其值为1
如果params['page']
为“2”,则pageNumber
为String
,其值为“2”
根据您在用户模型的paginate
方法中对参数执行的操作,可能是您遇到此问题的原因。
也许你应该尝试将它转发给Integer,然后再发送给paginate:
pageNumber = params['page'].to_i || 1