【发布时间】:2015-06-03 14:41:03
【问题描述】:
我创造了完美的葡萄创造行动
desc "Create a project."
params do
group :project, type: Hash do
requires :name, type: String, desc: "Name of project."
requires :user_id, type: String, desc: "user id"
requires :description, type: String, desc: "Description of project"
requires :project_type_id, type: String, desc: "Type of project"
end
end
post do
Project.create!(
name: params[:project][:name],
user_id: params[:project][:user_id],
description: params[:project][:description],
project_type_id: params[:project][:project_type_id]
)
end
但是,当我想创建一个 PUT 操作来编辑某些值时,我在 JSON 中收到错误响应:error: "project[id] is missing"
我的 PUT 代码:
desc "Update a project."
params do
group :project, type: Hash do
requires :id, type: String, desc: "project ID."
requires :name, type: String, desc: "Name of project."
requires :user_id, type: String, desc: "user id"
requires :description, type: String, desc: "Description of project"
requires :project_type_id, type: String, desc: "Type of project"
end
end
put ':id' do
Project.find(params[:project][:id]).update!(
name: params[:project][:name],
user_id: params[:project][:user_id],
description: params[:project][:description],
project_type_id: params[:project][:project_type_id]
)
end
我做错了什么?
【问题讨论】:
-
您是否尝试过使用 curl 或 ember 之外的其他工具来访问此路线?我只是问,因为这似乎与余烬无关。
-
是的。我通过 swagger doc 编辑项目并且工作得很好。我只是在 rails 和简单的 ember 应用程序中创建简单的葡萄 api。在 ember 应用程序中,我生成
ember g scaffold projects....,仅此而已。我从link 阅读了主题,并通过添加group :contact, type: Hash do来编辑我的Grape API。我不知道为什么自创作新作品以来编辑不起作用:/ -
这对这里的任何人都没有帮助,真的。您仍然需要提供一个示例 JSON 有效负载。
-
好的。我的前端发送这个:
{"project":{"name":"tt","user_id":44,"description":"asdasdasd","project_type_id":3,"created_at":"2015-06-03T14:15:06.689Z","updated_at":"2015-06-03T14:15:06.689Z"}}我的后端想要这个:{"name":"tt","user_id":45,"description":"asdasdasd","project_type_id":2,"created_at":"2015-06-03T14:15:06.689Z","updated_at":"2015-06-03T14:15:06.689Z" } -
将来,在您的问题中提供此类示例将有所帮助。如果我觉得我很粗鲁,我深表歉意,这只是有助于展示完整的上下文以获得最佳答案。
标签: ruby-on-rails json ruby-on-rails-4 grape