回答了很多问题,但仍然找不到解决方案。 我一直在尝试成功获得对以下控制器的POST请求的响应,
def create
@user = User.new(user_params)
if @user.save
render json: @user, status: :created, location: @user
else
render json: @user.errors, status: :unprocessable_entity
end
private
def user_params
params.require(:user).permit(:name, :email, :phone, :password)
end
end
尽管我发送了所有提到的参数,但在请求中,我仍然遇到错误。
"status": 400,
"error": "Bad Request",
"exception": "#<ActionController::ParameterMissing: param is missing or the value is empty: user>"
我正在使用Rails版本5.2.1
答案 0 :(得分:1)
如果您查看日志,则您的邮寄请求中传输的数据是什么样的?
当您遇到这种类型的错误时,通常是因为您发送这样的数据:
{ first_name: 'John', last_name: 'Doe', ...}
服务器希望您将其嵌套到user
对象中(因此require(:user) in your strong_params
:
{ user: { first_name: 'John', ... } }
答案 1 :(得分:0)
这对我有用。 我在params方法中仅进行了一个哈希,而不是嵌套哈希。 我的user_params方法是:-
def user_params params.permit(:name,:email,:phone,:password) 结束
或者您可以使用您的方法,但参数会通过用户哈希传递,如下所示。
{用户:{名称:“ bittu”,电子邮件:“ abc@yopmail.com”,phome:123456,密码:“ 123456”}}