Ruby on rails 在rescue_中使用respond_向发出异常警报

Ruby on rails 在rescue_中使用respond_向发出异常警报,ruby-on-rails,exception,rescue,Ruby On Rails,Exception,Rescue,我正在营救一个未经授权的异常,并希望在此营救块内发出警报。由于这是在我的应用程序控制器中,这个救援可能会以多种格式进行,因此我需要一个respond\u to块 如果我这样做时没有响应,一切正常。状态设置为401,我看到正确的异常消息闪烁 render :json => exception.message, :status => 401 但是,如果我在repond_to块中执行相同的操作,则没有任何效果。未设置状态,也未呈现异常消息 respond_to do |format|

我正在营救一个未经授权的异常,并希望在此营救块内发出警报。由于这是在我的应用程序控制器中,这个救援可能会以多种格式进行,因此我需要一个
respond\u to

如果我这样做时没有响应,一切正常。状态设置为401,我看到正确的异常消息闪烁

render :json => exception.message, :status => 401
但是,如果我在
repond_to
块中执行相同的操作,则没有任何效果。未设置状态,也未呈现异常消息

respond_to do |format|
  format.json { render :json => exception.message, :status => 401 }
end

这里有什么问题?我已经浏览了大量的示例,这似乎应该是可行的,但是状态和消息似乎被忽略了。

此外,您正在使用

render :json => exception.message, :status => 401
您正在答复HTML请求。。。所以如果你需要在浏览器上渲染,你需要自己处理所有的格式

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

此外,您正在使用

render :json => exception.message, :status => 401
您正在答复HTML请求。。。所以如果你需要在浏览器上渲染,你需要自己处理所有的格式

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

在第1个变体中,您对控制器操作的所有请求进行响应,不管它们的格式是什么。第二个变量仅定义json格式请求的响应,例如
/example/new.json
。如果您像这样请求您的操作,它将退回到html格式,您不为其定义任何状态和消息。有关更多详细信息,请参见此问题和答案:在第1个变体中,您将响应所有控制器操作请求,不管它们的格式是什么。第二个变量仅定义json格式请求的响应,例如
/example/new.json
。如果您像这样请求您的操作,它将退回到html格式,您不为其定义任何状态和消息。看这个问题和答案了解更多细节:我的意思是。。。按照你的提问方式,我想你只是在你的浏览器上测试它有问题。。。如果未使用结尾处的
.json
格式命中端点。。。像
/controller/action.json
我的意思是。。。按照你的提问方式,我想你只是在你的浏览器上测试它有问题。。。如果未使用结尾处的
.json
格式命中端点。。。比如
/controller/action.json