【发布时间】:2013-07-17 19:50:57
【问题描述】:
几天来,我一直在尝试从POSTman 写一个普通的模型 Rails 应用程序,但不知道该怎么做,也找不到任何关于如何做的信息。
我的应用有一个带有名称字段的用户模型。我要做的就是使用 POSTman 通过 JSON 远程更改名称。
感谢任何有关如何执行此操作的帮助,包括指向如何执行此操作的基本资源的链接。
我想这是非常基本的。
编辑:这是 POSTman 输出的屏幕截图
编辑 2:
来自服务器日志:
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"
}
同样,我没有对脚手架进行任何更改,并且我无法弄清楚如何格式化 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 更新一个名称...
【问题讨论】:
-
到底是什么问题?您是否在 rails 服务器日志中看到任何输出?
-
它什么也不做。当我输入地址localhost:3000/users/1.json 并选择 PUT,键为名称,值为 Jeff 204 时,没有返回任何内容
-
@diego.greyrobot 我刚刚添加了我一直在尝试做的事情的屏幕截图。
-
您可能在日志中看到了这一点,对吧? “警告:无法验证 CSRF 令牌的真实性”
-
是的!如何仅针对 JSON 请求禁用此功能?
标签: ruby-on-rails json api