2013-02-11 48 views
3

過去4個小時我一直在努力解決這個問題。每當我發送一個不帶參數的POST請求(body =「{}」),我就會收到一個帶有HTTP HTTP狀態錯誤代碼的響應。Rails狀態406 POST迴應

我的控制器看起來那樣簡單

def resetFixture 

    respond_to do |format| 
     format.json { render :json=>final_obj, :status=>:ok} 
    end 
    end 

路線:

match 'TESTAPI/resetFixture' => 'users#resetFixture', :via => :post 

我試圖返回一個JSON響應 「{ERRCODE:1}」

如果我這樣做一個curl請求與-d「」,我得到我想要的迴應,但我該如何解決這個錯誤代碼?我似乎已經指定了JSON和狀態。

這可能是更直觀,如果我還包括從服務器發生故障的請求的調試日誌:

+0

您可以發佈您要發佈的確切網址? – Max 2013-02-11 18:28:42

+0

我發佈到本地主機:3000/TESTAPI/resetFixture – Andy 2013-02-11 18:30:21

+0

您需要發佈到'localhost:3000/TESTAPI/resetFixture.json' – Max 2013-02-11 18:37:58

回答

2

因爲你不能要求resetFixture.json那麼你就需要將以下標頭添加到您的要求:

Accept: application/json

這會告訴你要回JSON軌道。 -H "Accept: application/json"

另外,如果你想Rails的總是默認爲JSON您可以將路線更改爲:

您可以捲曲加入下面的參數測試該

match 'TESTAPI/resetFixture' => 'users#resetFixture', :via => :post, :defaults => { :format => 'json' }