如何修复JavaScript获取API PUT的400个错误请求

如何修复JavaScript获取API PUT的400个错误请求,javascript,ruby-on-rails,reactjs,put,fetch-api,Javascript,Ruby On Rails,Reactjs,Put,Fetch Api,我正在向rails服务器发出PUT请求,以更新items数组中的项目。我的项目包括id、名称和说明。当我发出PUT请求时,我得到一个错误请求的响应。此外,我还遇到以下错误: ActionController::ParameterMissing(param缺失或值为空:item): app/controllers/api/v1/items\u controller.rb:24:in'item\u params' app/controllers/api/v1/items\u controller.r

我正在向rails服务器发出PUT请求,以更新items数组中的项目。我的项目包括id、名称和说明。当我发出PUT请求时,我得到一个错误请求的响应。此外,我还遇到以下错误:

ActionController::ParameterMissing(param缺失或值为空:item):
app/controllers/api/v1/items\u controller.rb:24:in'item\u params'
app/controllers/api/v1/items\u controller.rb:17:在“更新”中

我尝试过以不同的方式格式化请求,以查看该项是否未正确格式化。我查过类似的帖子,但它们似乎没有涵盖我的确切请求方法,也没有显示类似类型的对象

我当前要更新的函数如下所示:

 handleUpdate = (item) => {
    const id = item.id;
    fetch(`/api/v1/items/${id}`, {
      method: 'PUT',
      body: JSON.stringify({
        'item': item
      })
    }).then(() => {
      this.updateItems(item);
    }).catch(function (error) {
      console.log(error);
    })
  }
这是我的控制器:

def update
    item = Item.find(params["id"])
    item.update_attributes(item_params)
    respond_with item, json: item
  end

  private

  def item_params
    params.require(:item).permit(:id, :name, :description)
  end
以下是我通过调用handleUpdate函数创建的对象:

const item = {
        'id': id,
        'name': this.state.name,
        'description': this.state.description
      };
      this.props.handleUpdate(item);
正在正确更新我的状态,但该错误阻止我的数据库正确更新项目。

由于您在
参数中需要“项”。需要(:项)
,因此您的请求需要一个父“项”键


事实上,这只是我需要做的一部分。我添加了一个内容类型为application/json的标题,结果很好。谢谢你的帮助。
{"item": { "id": id, "name": "somename", "description": "some desc." }}