Ruby on rails 轨道为灰烬提供了新的路径
我创造了完美的动作Ruby on rails 轨道为灰烬提供了新的路径,ruby-on-rails,json,ruby-on-rails-4,grape,Ruby On Rails,Json,Ruby On Rails 4,Grape,我创造了完美的动作 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 :descrip
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]丢失”
我的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
我的错误是什么?如果没有看到PUT请求中发送的内容,我不确定您的结构,但我认为Grape代码应该是这样的-但是,我完全是在猜测,没有看到您的JSON负载
put ':id' do
Project.find(params[:id]).update!(
name: params[:name],
user_id: params[:user_id],
description: params[:description],
project_type_id: params[:project_type_id]
)
end
嗯。我用这个代码修复它,它就工作了
desc "Update 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
put ':id' do
Project.find(params[: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
你有没有试过用卷发或者其他在余烬之外的东西来达到这条路线?我只是问,因为这似乎与余烬无关。是的。我编辑项目的招摇过市文件和工作的伟大。我只是在rails和SimpleEmber应用程序中创建了简单的GrapeAPI。在ember应用程序中,我生成
ember g脚手架项目….
仅此而已。我从中阅读主题,并通过添加组:联系人,键入:Hash do
编辑我的Grape API。我不知道为什么编辑没有工作,因为创建了一个新的工作:/这对这里的任何人都没有帮助,真的。您仍然需要提供一个示例JSON payload.Ok。我的前端发送此邮件:{“project”:{“name”:“tt”,“user_id”:44,“description”:“asdasdad”,“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”:“asdasdad”,“project_type_id”:2,“created_at:”2015-06-034:15:06.689Z“,“更新时间”:“2015-06-03T14:15:06.689Z”}
将来,在您的问题中提供此类示例将有助于您。如果我被认为粗鲁,我很抱歉,这只会有助于演示完整的上下文以获得最佳答案。好消息!如果您使用的是ember数据,我将继续调整您的API以满足他们的约定,以避免头痛。谢谢您的帮助 ! :)