[英]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.