2016-05-12 37 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