簡體   English   中英

即使我放了其他狀態代碼,Rails4 jbuilder總是返回狀態代碼200

[英]Rails4 jbuilder always return status code 200, even if I put other status code

我構建了一個json視圖,以在rails4應用程序的ajax調用中返回json。 我已經使用了這里建議的想法https://stackoverflow.com/a/12832116/1560470

但是,即使我強制執行其他狀態碼,我也始終會獲得200的狀態碼。

我在view / managers / create.json.jbuilder中的jbuilder視圖如下所示:

if @manager.errors.messages.any?
  envelope(json, :unprocessable_entity, @manager.errors.messages) do
    json.success false
  end
else
  envelope(json, :created) do
    json.success true
  end
end

我的應用程序助手如下所示:

module ApplicationHelper

  def envelope json, status, errors
    json.status status
    json.data do
      yield if block_given?
    end
    json.errors errors
  end

end

我的控制器如下:

def create
    @manager = Manager.new manager_params
    @saved = ( @manager.valid? && @manager.save )
end

您甚至可以在jbuilder視圖中看到將status參數值傳遞為:unprocessable_entity unprocessable_entity,但每次響應仍返回200。 即使我使用任何狀態代碼 ,也始終返回200。狀態代碼在http://guides.rubyonrails.org/layouts_and_rendering.html中定義

我遇到了同樣的問題,通過調用渲染以及隨后要發布的任何狀態,我都獲得了成功。 create的底部放置以下內容

render status: 400

參考: https : //stackoverflow.com/a/28144206/3826642

您可以將邏輯從該信封方法移至jbuilder模板,以便將狀態直接從控制器傳遞到視圖。

您在envelope方法中具有的狀態將僅在呈現的json中,而不是服務器發送的http響應狀態代碼,而render方法中的狀態響應為

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM