我构建了一个 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
,每次仍然响应为 200。即使我使用任何状态码,它总是返回 200。状态码在http://guides.rubyonrails.org/layouts_and_rendering.html中定义