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