ruby-on-rails - 使用 JSON API 写入 Rails

标签 ruby-on-rails json api

我一直在尝试从 POSTman 写一个普通的模型 Rails 应用程序几天了,无法弄清楚如何去做,或者找不到任何关于如何去做的信息。

我的应用程序有一个带有名称字段的用户模型。我要做的就是使用 POSTman 通过 JSON 远程更改名称。

感谢有关如何执行此操作的任何帮助,包括指向有关如何执行此操作的基本资源的链接。

我想这是非常基本的。

编辑:这是来自 POSTman 输出的屏幕截图

enter image description here

编辑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)

交易正在发生,但记录实际上并没有被更新。我需要更改 Controller 中的某些内容吗?它只是一个普通的 rails 生成的 Controller ,没有任何变化。

编辑 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 以将其嵌套在用户下,就像答案所暗示的那样。

这是我的 Controller 的相关部分:
# 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 更新一个名字......

最佳答案

对于您要发布到的 Controller :

protect_from_forgery with: :null_session

或来自:How do I bypass protect_from_forgery in Rails 3 for a Facebook canvas app?
skip_before_filter :verify_authenticity_token, :only => [THE ACTION]

编辑

您的 JSON 不正确...您正在发布
{"name"=>"Jeff", "id"=>"1"}

由于您的 Controller 是 user.update_attribute(params[:user]) ,您的 JSON 需要在用户属性下
{
    "id": 1,
    "user": {
        "name": "Jeff"
    }
}

这将创建一个哈希
{"user"=>{"name"=>"Jeff"}, "id"=>"1"}

关于ruby-on-rails - 使用 JSON API 写入 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17708969/

相关文章:

javascript - js.erb 和 css.erb 文件上良好的代码突出显示、语法分析和代码辅助编辑器

ruby-on-rails - 令人难忘的 ruby 名称生成器 gem

javascript - 检查json请求的响应内容?

api - 访问 Google Pay API for Passes

Javascript 保持页面状态 - 最佳实践?

ruby-on-rails - ActiveModel::ForbiddenAttributesError Rails 4

javascript - 如何在嵌套的json对象数组中获取子ID的直接父ID?

java - JsonObject 添加属性 - map

api - Paypal Rest API - 即时付款生命周期

javascript - JavaScript 中 REST API 客户端库的好例子有哪些