2013-07-17 67 views
8

我一直試圖從POSTman中寫入常規的一個模型rails應用程序幾天,並且無法弄清楚如何去做,或者找到任何有關如何做到這一點。使用JSON API寫入Rails

我的應用程序有一個帶有名稱字段的用戶模型。我想要做的就是使用POSTman通過JSON遠程更改名稱。

任何有關如何做到這一點的幫助,我們都很感激,包括一個鏈接到如何做到這一點的基本資源。

我想這是非常基本的。

編輯:這裏是從郵遞員輸出截圖

enter image description here

編輯2:

從服務器日誌:

Started PUT "https://stackoverflow.com/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) 

的交易發生,但記錄ISN實際上沒有更新。我需要改變控制器中的某些東西嗎?這只是一個普通的軌道生成控制器,沒有任何變化。

編輯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的名稱...

+0

到底是什麼問題哈希?你在rails服務器日誌中看到任何輸出嗎? – DiegoSalazar

+0

它什麼都不做。當我放置地址http:// localhost:3000/users/1.json並選擇PUT時,鍵名稱和值爲Jeff 204,不返回內容 – Arel

+0

@diego。greyrobot我剛剛添加了我一直在嘗試做的截圖。 – Arel

回答

5

對於要張貼到控制器:

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"} 

由於您的控制器並user.update_attribute(params[:user]),你的JSON必須根據用戶屬性

{ 
    "id": 1, 
    "user": { 
     "name": "Jeff" 
    } 
} 

這將創建

{"user"=>{"name"=>"Jeff"}, "id"=>"1"} 
+0

所以現在它沒有給出CSRF令牌錯誤,但是在提交事務後仍然給出204無內容錯誤。我已經用完整的輸出更新了我的問題。 – Arel

+0

用正確的JSON更新 –

+0

我完全迷失在這裏。我一直在閱讀rails文檔,試圖弄清楚如何以你展示的方式格式化我的JSON輸出,並且他們說輸出應該已經是你的方式,並且只給出關於如何改變你的(正確)格式的指示到我不正確的格式。這裏是文檔:http://api.rubyonrails.org/classes/ActionController/ParamsWrapper.html我也用我的輸出和我的控制器更新了我的問題。 – Arel