【发布时间】:2017-07-12 17:48:28
【问题描述】:
我正在抢救一个未经授权的异常,并希望在此抢救块内呈现警报。由于这是在我的应用程序控制器中,这种救援可能会以多种格式出现,所以我需要一个 respond_to 块。
如果我在没有respond_to 的情况下执行此操作,则一切正常。状态设置为 401,我看到正确的异常消息闪烁。
render :json => exception.message, :status => 401
但是,如果我在 repond_to 块内执行相同的操作,则没有任何效果。未设置状态,未呈现异常消息。
respond_to do |format|
format.json { render :json => exception.message, :status => 401 }
end
这可能是什么问题?我查看了大量示例,这似乎应该可以工作,但状态和消息似乎被忽略了。
【问题讨论】:
-
在第一个变体中,您呈现对控制器操作的所有请求的响应,尽管它们的格式是什么。第二个变体只为 json 格式请求定义响应,例如
/example/new.json。如果您像/example/new这样对您的操作提出请求,它将回退到您未定义任何状态和消息的 html 格式。有关详细信息,请参阅此问题和答案:stackoverflow.com/questions/9492362/…
标签: ruby-on-rails exception rescue