#<actioncontroller :: parametermissing:param =“” is =“” missing =“”或=“” the =“” value =“” is =“”空:=“” user =“”>

时间:2018-12-19 06:21:23

标签: ruby-on-rails-5 strong-parameters actioncontroller

回答了很多问题,但仍然找不到解决方案。 我一直在尝试成功获得对以下控制器的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

2 个答案:

答案 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”}}