【问题标题】:Render exception alert in rescue_from using respond_to使用respond_to在rescue_from中呈现异常警报
【发布时间】: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


【解决方案1】:

除了你正在渲染一个json

render :json => exception.message, :status => 401

您正在响应 HTML 请求...所以如果您需要在浏览器上呈现它,您需要自己处理所有格式...

respond_to do |format|
  format.json { ... }
  format.html { ... }
end

【讨论】:

  • 我的意思是...按照您的要求,我猜您只是在浏览器上测试它时遇到问题...如果最后没有使用.json 格式到达端点...喜欢/controller/action.json
猜你喜欢
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
相关资源
最近更新 更多