1
當請求驗證失敗並且響應類型爲JSON時,繼承資源似乎自動將狀態設置爲422。但是,如果響應類型爲html,則狀態設置爲200.如果驗證失敗,是否有辦法告訴inherited_resources始終返回422?如何配置inherited_resources以爲驗證失敗的請求設置狀態
乾杯, 安迪
當請求驗證失敗並且響應類型爲JSON時,繼承資源似乎自動將狀態設置爲422。但是,如果響應類型爲html,則狀態設置爲200.如果驗證失敗,是否有辦法告訴inherited_resources始終返回422?如何配置inherited_resources以爲驗證失敗的請求設置狀態
乾杯, 安迪
這裏是一個猴子補丁,你可以把你的初始化(on Rails的測試4.0.3):
class ActionController::Responder
def navigation_behavior_with_errors(error)
if !get? && has_errors? && default_action
render :action => default_action, status: :unprocessable_entity
return
end
navigation_behavior_without_errors(error)
end
alias_method_chain :navigation_behavior, :errors
end
這不是在'inherited_resources'看來,這是在Rails ActionPack中。 'inherited_resources'基本上只是調用respond_with,Rails負責其餘的部分。除了猴子修補,我沒有看到一個簡單的方法來改變默認行爲。 – ybart