首页 > 解决方案 > Rails 控制器参数与发送参数不同

问题描述

Rails 参数与实际发送参数不同

邮递员发送的参数:

{
"first_name": "Arun",
"last_name": "Deepak",
"email": "arun.deepak@abc.com",
"password": "Abc@123",
"confirm_pasword": "Abc@123",
"user_type": "seller"
}

控制器中的参数:

{
"first_name"=>"Arun", "last_name"=>"Deepak",
"email"=>"arun.deepak@abc.com",
"password"=>"[FILTERED]", "confirm_pasword"=>"Abc@123",
"user_type"=>"seller",
"user"=>{"email"=>"arun.deepak@abc.com", "user_type"=>"seller"}
}

控制器

def create
  @user = User.create!(user_params)
  render json: @user
end
...
def user_params
  params.require(:user).permit(:email, :user_type, :password, :password_confirmation)
end

铁路路线:

namespace :api do
  namespace :v1 do
    resources :users
  end
end

在这里,控制器中的参数如何变化?

我知道我发送了错误的参数,但是 user_params 如何接受错误的参数?

请求参数是如何修改的?

标签: ruby-on-railsstrong-parameters

解决方案


控制器中的参数不会更改。也许您正在尝试发送first_namelast_name作为用户参数。它在用户创建期间给你一个错误。那是因为你的user_params方法只返回用户下的参数,使用 this params.require(:user)

Parameters: {
  "user": {
    "email": "arun.deepak@abc.com",
    "user_type": "seller",
    "first_name": "Arun",
    "last_name": "Deepak",
    "password": "[FILTERED]",
    "confirm_pasword": "Abc@123"
  }
}

推荐阅读