![](/img/trans.png)
[英]ActionController::Parameters 'require' method returns a string
[英]ActionController Parameters require a hash, not primitive
我是Ruby的新手,但我已經閱讀了數十篇文章,但最終沒有解決該問題的方法:
我正在嘗試使我的API控制器防彈。 為了驗證請求,我使用ActionController :: Parameters 。
例如,在我的Users
API控制器中:
params.require(:user).permit(:email)
如果有人使用{"user": "abc"}
調用它,則會導致錯誤和HTTP 500,這顯然是用戶不將user
作為哈希傳遞的錯誤,並應導致HTTP 400:
NoMethodError in API::UsersController#update
undefined method `permit' for "abc":String Did you mean? print
如何確保我的API用戶傳遞哈希值?
您可以使用以下方法:dig(ruby 2.3):
重復檢索與每個鍵對象相對應的值對象。
http://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig
所以你可以說params.dig(:user,:email)
您也可以說params [:user] .has_key?(:email),但第一個更好
另外在相關說明上,不確定是否應使用400-我認為422可能更好,因為它是422-無法處理的實體
但不重要...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.