【问题标题】:Parameter Missing from frontend request to backend从前端请求到后端的参数丢失
【发布时间】:2020-06-10 08:10:40
【问题描述】:

我目前收到此错误:

ActionController::ParameterMissing in UsersController#create
param is missing or the value is empty: first_name

我正在尝试使用我的 Rails 后端 API 创建用户记录。我正在过滤具有强大参数的请求,例如

def create
  user = User.new(user_params)
  ...
end

def user_params
  params.require([:first_name, :last_name, :email, :password])
end

在我的前端,我提出了这种类型的请求。我仔细检查以确保使用下面的狙击手,我试图发送的对象是这样的:

数据:

{
  "first_name": "asdasd",
  "last_name": "asdasd",
  "email": "asdasd@gmail.com",
  "password": "password"
}

sn-p:

  const response = await fetch(url, {
    method: "POST",
    body: JSON.stringify({
      first_name,
      last_name,
      email,
      password,
    }),
  });

【问题讨论】:

  • 您是否打开了开发人员工具并检查了是否正在发送值? F12,然后转到网络选项卡,然后转到Headers,然后向下请求有效负载
  • @Ifaruki yup 请求负载看起来与预期一样!

标签: javascript ruby-on-rails ruby ecmascript-6 strong-parameters


【解决方案1】:

嘿,代码对我来说看起来不错,但是我会尝试使用属性标题定义内容类型 json

  const response = await fetch(url, {
    method: "POST",
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      first_name,
      last_name,
      email,
      password,
    }),
  });

我对 fetch 还不是很熟悉,但是当您指定内容类型时,通常会出现黑魔法

【讨论】:

  • 这很重要!现在使用 dpaste.org/qdrQ 获得 500 我认为这是我使用强参数的方式,因为我假设传入数组意味着哈希中的多个必需键
猜你喜欢
  • 2021-08-15
  • 2019-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多