2014-02-20 104 views
21

當我的Rails:渲染Json的狀態問題

render json: { 
    error: "No such user; check the submitted email address", 
    status: 400 
    } 

然後做我的測試和檢查

response.code 

我得到200,而不是400

我敢肯定的答案,這個荒謬的簡單,但我一直在尋找一個小時,似乎無法得到這個工作。我只能解析Json,然後檢查狀態碼......但是沒有辦法獲得response.code來返回狀態嗎?我知道技術上這是成功的,我假設這就是response.code返回200的原因,但是我在直接影響返回的代碼之前使用了Jbuilder。

回答

49

您已經在那裏創建了json,它將被返回,並且在那個json中將會標識狀態--400。但是,這並不能告訴Rails在標題中發送400狀態。

你可以這樣做:

render json: { 
    error: "No such user; check the submitted email address", 
    status: 400 
}, status: 400 

或者類似的東西

payload = { 
    error: "No such user; check the submitted email address", 
    status: 400 
} 
render :json => payload, :status => :bad_request 

您可以使用符號:BAD_REQUEST或狀態編號400

+0

唉。非常感謝。當我看到之前,我必須輸入代碼:400。 – Morgan

+0

,內心的地位也是不必要的;甜。 – Morgan

+1

太好了。我並不認爲json中的狀態鍵/值是你正在尋找的,但我將它包含在示例中以防萬一。 –