我有一個接受參數列表的RESTful API(ActionController :: API)服務。 RESTful服務接受JSON主體請求(使用內容類型的應用程序/ json)。當調試控制器/動作(動作DEF後右),並在PARAMS列表採取一個高峯,它會顯示如下:Rails 5參數/強參數問題
<ActionController::Parameters {"given_name"=>"Mark", "subdomain"=>"development", "controller"=>"user", "action"=>"create", "user"=>{"given_name"=>"Mark"}} permitted: false>
編輯 所有的請求中有(當它傳遞到控制器/動作 - 使用POSTman):
{"given_name":"Mark"}
請注意,對象包含given_name參數兩次。這是正常的行爲嗎?我沒有將「用戶」對象(json對象)傳遞給控制器/操作?什麼是允許的標誌?
當我嘗試使用(現在我只是在測試REST調用和分配用戶對象將除...沒有驗證已編程還沒有任何值):
user = User.new(params)
我得到的錯誤:
#<ActiveModel::ForbiddenAttributesError: ActiveModel::ForbiddenAttributesError>
所以,我到處尋找這背後的原因(爲什麼會出現「用戶」在PARAMS列表關鍵什麼是許可標誌的目的,爲什麼我會得到一個錯誤?當我嘗試分配參數)?
編輯
做一些測試後,我改變控制器的名字從「user_controller」到「tester_controller」和設置的路由指向已重命名控制器。
看起來上面參數列表中的「user」對象已經變成了「tester」。那麼爲什麼參數列表包含一個「對象」,其中所有傳入的參數都帶有控制器的名稱?如果是這樣的話,爲什麼需要?
任何幫助將不勝感激。
應該是'params ['user']'no?像這樣,你似乎試圖分配用戶的屬性'controller'或'action' – LolWalid
當它通過它時,所有的請求都有:{「given_name」:「Mark」}。但在行動中,我得到了上面列出的參數。 – Sean
因此,我將控制器從「user_controller」重命名爲「tester_controller」。看起來「user」=> {「given_name」:「Mark」}「已經改變爲」tester「=> {」given_name「:」Mark「}」。爲什麼有一個控制器名稱添加到參數列表中的「對象」? – Sean