#<ActionController::ParameterMissing: param is missing or the value is empty: user>

问题描述 投票:0回答:2

翻了很多答案还是没找到解决办法。 我一直在尝试获得对以下控制器的 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

ruby-on-rails-5 strong-parameters actioncontroller
2个回答
1
投票

如果您查看日志,您的发布请求中传输的数据是什么样的?

当你遇到这种类型的错误时,通常是因为你发送的数据是这样的:

{ first_name: 'John', last_name: 'Doe', ...}

当服务器希望您将其嵌套到一个

user
对象中时(因此
require(:user) in your strong_params

{ user: { first_name: 'John', ... } }

0
投票

这对我有用。 我在 params 方法中只做了一个散列而不是嵌套散列。 我的 user_params 方法是:-

def user_params
  params.permit(:name, :email, :phone, :password)
end

或者您可以使用您的方法,但您的参数在用户散列中传递,如下所示。

{user: {name: "bittu", email: "[email protected]", phone: 123456, password: "123456"  } }
© www.soinside.com 2019 - 2024. All rights reserved.