2016-05-12 36 views
2

我有一个RoR 4应用程序用作后端API。我想,当搜索用户,所以我定义在我的控制器下面的方法来实现分页:未找到RoR 4控制器的参数

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,甚至当我添加参数页= 2例如。你们有什么想法可能是错误的吗?

+0

通过把'提高params.inspect'检查'params'。我相信这是由于***字符串键***。 – Pavan

+0

您能否包含查看代码?如果可能,请求的日志? –

+0

字符串键应该不重要,因为Rails将参数存储在一个'HashWithIndifferentAccess'对象中,该对象的作用类似于散列,但对*是否将字符串或符号作为关键字进行传递是*无关紧要。 –

回答

0
params['page'] = 1 if params['page'].nil? 
pageNumber = params['page'] 

如果params['page']是零,pageNumber将是一个Integer,其值为1

如果params['page']是 '2',pageNumber将是一个String,其值为 '2'

根据什么你在用户模型中的paginate方法中使用了你的参数,这可能是你面对这个问题的原因。

也许你应该尝试发送它进行分页之前将其转换为整数:

pageNumber = params['page'].to_i || 1