我要做的只是创建一个用户(有设计):
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仅返回:email和:username,没有密码。所以我深入了解会发生什么 - 我向服务器发送此请求负载(来自Chrome控制台):
{"email":"asd@asd.coma","username":"test","password":"asdasdasd","password_confirmation":"asdasdasd"}
我在控制台中看到的内容:
Processing by UsersController#create as JSON
Parameters: {"email"=>"asd@asd.coma", "username"=>"test", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "user"=>{"username"=>"test", "email"=>"asd@asd.coma"}}
Unpermitted parameters: format, user
params
用户未通过时?为什么它只是所有其他参数的副本以及为什么缺少密码?Unpermitted parameters
是什么意思?如何解决?我想在手册或其他东西中有所有这些东西的简单解释,但我找不到它(
答案 0 :(得分:3)
将JSON包装在以模型命名的根元素中:
{"user":
{
"email": "asd@asd.coma",
"username": "test",
"password": "asdasdasd",
"password_confirmation": "asdasdasd"
}
}
答案 1 :(得分:0)
我真的需要看到你的观点。看起来正在发生的事情是您在fields_for :user
或类似内容中发送了其他信息,因此您在创建时获得了参数hash :user
...
这意味着您拥有未列入白名单的参数。在Rails 4中,将strong_parameters
添加到strong_parameters
上的Rails has great documentation以及{{1}上的there are blog posts和API documenation时,黑名单参数成为默认参数同样。
strong_parameters
是强参数的一部分,告诉控制器期望一个名为require(:user)
的参数哈希包含允许的属性(因此:user
。