如果Rails应用程序中存在异常,则会获得包含调用堆栈,请求参数和代码摘录的错误页面。
答案 0 :(得分:1)
您只能在开发模式下看到带有回溯的页面,而在生产模式下,您会看到标准错误页面(位于public / 500.html中),它只是说发生了错误。
这是出于安全原因,当然,它并不局限于rails:所有Web应用程序框架都是这样做的,因为回溯可以泄露敏感信息(有时您会在Web应用程序上看到错误消息)显示数据库连接字符串或某些密码等;好吧,你不希望这种情况发生。)
在开发模式下,在XHR调用中,您仍然会收到回溯(我使用firebug调试我的应用程序,因此我只需将其复制并粘贴到某处)。
在生产模式中,您可以通过设置:remote_function等函数的失败参数来显式设置要在错误时执行的函数,从而处理ajax调用中的XHR错误。
答案 1 :(得分:1)
您可以尝试在动作控制器中覆盖rescue_action
。
def rescue_action(exception)
if request.xhr?
custom_xhr_error_handling_for(exception)
else
super
end
end
更传统的方法是使用rescue_from Exception, :custom_xhr_error_handling_for
,但如果后来证明它不是xhr响应,则会使您无法让默认代码执行脏工作。