翻了很多答案还是没找到解决办法。 我一直在尝试获得对以下控制器的 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
如果您查看日志,您的发布请求中传输的数据是什么样的?
当你遇到这种类型的错误时,通常是因为你发送的数据是这样的:
{ first_name: 'John', last_name: 'Doe', ...}
当服务器希望您将其嵌套到一个
user
对象中时(因此require(:user) in your strong_params
:
{ user: { first_name: 'John', ... } }
这对我有用。 我在 params 方法中只做了一个散列而不是嵌套散列。 我的 user_params 方法是:-
def user_params
params.permit(:name, :email, :phone, :password)
end
或者您可以使用您的方法,但您的参数在用户散列中传递,如下所示。
{user: {name: "bittu", email: "[email protected]", phone: 123456, password: "123456" } }