Ruby on rails 使用JSON API写入Rails
几天来,我一直在尝试从编写一个常规的单模型rails应用程序,但我不知道如何做,也找不到任何关于如何做的信息 我的应用程序有一个带有名称字段的用户模型。我所要做的就是使用POSTman通过JSON远程更改名称 任何关于如何做到这一点的帮助,包括一个关于如何做到这一点的基本资源链接,我们都将不胜感激 我想这是很基本的 编辑:这是邮递员输出的屏幕截图 编辑2: 从服务器日志:Ruby on rails 使用JSON API写入Rails,ruby-on-rails,json,api,Ruby On Rails,Json,Api,几天来,我一直在尝试从编写一个常规的单模型rails应用程序,但我不知道如何做,也找不到任何关于如何做的信息 我的应用程序有一个带有名称字段的用户模型。我所要做的就是使用POSTman通过JSON远程更改名称 任何关于如何做到这一点的帮助,包括一个关于如何做到这一点的基本资源链接,我们都将不胜感激 我想这是很基本的 编辑:这是邮递员输出的屏幕截图 编辑2: 从服务器日志: Started PUT "/users/1.json" for 127.0.0.1 at 2013-07-17 16:53
Started PUT "/users/1.json" for 127.0.0.1 at 2013-07-17 16:53:36 -0400
Processing by UsersController#update as JSON
Parameters: {"name"=>"Jeff", "id"=>"1"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", "1"]]
(0.1ms) begin transaction
(0.1ms) commit transaction
Completed 204 No Content in 3ms (ActiveRecord: 0.4ms)
事务正在发生,但记录实际上没有被更新。我是否需要更改控制器中的某些内容?它只是一个常规的rails生成的控制器,没有任何更改
编辑3:
这是我刚转到http://localhost:3000/users/1.json
{
"created_at": "2013-07-02T21:51:22Z",
"id": 1,
"name": "Arel",
"updated_at": "2013-07-02T21:51:22Z"
}
同样,我没有对scaffold做任何更改,我也没有弄清楚如何格式化JSON以将其嵌套在用户下,正如答案所示
以下是我的控制器的相关部分:
# GET /users/1
# GET /users/1.json
def show
@user = User.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @user }
end
end
# PUT /users/1
# PUT /users/1.json
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { }
else
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
我不明白为什么这么难。我正在尝试通过JSON更新您要发布到的控制器的名称…:
protect_from_forgery with: :null_session
或类似于:
编辑
您的JSON不正确。。。你正在发帖
{"name"=>"Jeff", "id"=>"1"}
由于您的控制器执行user.update_属性(params[:user])
,因此您的JSON需要位于用户属性下
{
"id": 1,
"user": {
"name": "Jeff"
}
}
这将创建一个
{"user"=>{"name"=>"Jeff"}, "id"=>"1"}
到底是什么问题?您是否在rails服务器日志中看到任何输出?它什么也不做。当我输入地址并选择put时,键为name,值为Jeff 204,则不显示任何内容returned@diego.greyrobot我刚刚添加了一个我一直在尝试做的截图。你可能在你的日志中看到了这一点,对吗?“警告:无法验证CSRF令牌的真实性”是!如何仅对JSON请求禁用它?因此,现在它没有给出CSRF令牌错误,但在提交事务后仍然给出204无内容错误。我已经用完整的输出更新了我的问题。我完全迷路了。我一直在阅读rails文档,试图找出如何按照您所展示的方式格式化JSON输出,他们说输出应该已经是您的方式了,并且只给出了如何从您的(正确的)格式更改为我的错误格式的说明。以下是文档:我还用我的输出和控制器更新了我的问题。输出是无关的。您正在发送输入。输入格式与输出格式不同。在postman中,将字段的名称更改为“user[name]”,这样做很有效!!谢谢你帮助我!我真的很感激!
{"user"=>{"name"=>"Jeff"}, "id"=>"1"}