我有一个名为的模型Entity
,控制器中的创建操作如下所示:
# enitities_controller.rb
def create
# loading params, etc...
@entity.save
respond_with @entity
end
我将 jbuilder 用于自定义 JSON 视图而不是渲染@entity.to_json
,效果很好。我有最后一个问题,即当模型由于验证错误而无法保存时,我得到以下响应(带有 status 422 Unprocessable Entity
):
{"errors":{"parent_share":["can't be blank","is not a number"]}}
我想用我自己的覆盖这个json。我知道他有可能替换respond_with @entity
为:
respond_with @entity do |format|
if @entity.errors.any?
format.json {
render "entities/create", :status => :unprocessable_entity
}
end
end
但是不应该通过定义某种错误视图或其他东西来获得更自动的魔术方式吗?这感觉有点脏,这让我每次需要它时都必须编写更多代码,而不是让我使用respond_with
. 还有其他方法吗?