如何修复JavaScript获取API PUT的400个错误请求
我正在向rails服务器发出PUT请求,以更新items数组中的项目。我的项目包括id、名称和说明。当我发出PUT请求时,我得到一个错误请求的响应。此外,我还遇到以下错误: ActionController::ParameterMissing(param缺失或值为空:item):如何修复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
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." }}