我想做的只是创建一个用户(使用设计):
def create
user = User.create user_params
user.save
render :json => user
end
private
def user_params
params.require(:user).permit(:email, :password, :password_confirmation, :remember_me, :username)
end
它不起作用,因为 user_params 仅返回:电子邮件和:用户名,没有密码。因此,我深入研究会发生什么 - 我向服务器发送此请求负载(从 Chrome 控制台):
{"email":"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="07667463476674632964686a66" rel="noreferrer noopener nofollow">[email protected]</a>","username":"test","password":"asdasdasd","password_confirmation":"asdasdasd"}
我在控制台中看到的内容:
Processing by UsersController#create as JSON
Parameters: {"email"=>"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d4b5a7b094b5a7b0fab7bbb9b5" rel="noreferrer noopener nofollow">[email protected]</a>", "username"=>"test", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "user"=>{"username"=>"test", "email"=>"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="80e1f3e4c0e1f3e4aee3efede1" rel="noreferrer noopener nofollow">[email protected]</a>"}}
Unpermitted parameters: format, user
- 为什么我没有传递 :user 在
params
中?为什么它只是所有其余参数的副本以及为什么它缺少密码? 不允许的参数
是什么意思?如何解决?- 为什么我需要 require(:user)?似乎没有它一切都可以正常工作。
我想手册或其他内容中对所有这些事情都有简单的解释,但我找不到它(
最佳答案
将 JSON 包装在以模型命名的根元素中:
{"user":
{
"email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cdacbea98dacbea9e3aea2a0ac" rel="noreferrer noopener nofollow">[email protected]</a>",
"username": "test",
"password": "asdasdasd",
"password_confirmation": "asdasdasd"
}
}
关于devise - Rails 4 参数和 "Unpermitted parameters"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20024650/