我必须调试一些与db相关的错误,并且在db引起错误时一直持续监视日志。既然错误已经登录,我想有这样的例外:抑制浏览器中的异常
的ActiveRecord :: StatementInvalid
被抑制,使得用户将不会看到“出事了页面”。该错误仅限于应用程序的一小部分,我们希望在解决该问题后删除该抑制。
谢谢!
我必须调试一些与db相关的错误,并且在db引起错误时一直持续监视日志。既然错误已经登录,我想有这样的例外:抑制浏览器中的异常
的ActiveRecord :: StatementInvalid
被抑制,使得用户将不会看到“出事了页面”。该错误仅限于应用程序的一小部分,我们希望在解决该问题后删除该抑制。
谢谢!
您可以在您的ApplicationController中添加rescue_from
行,以捕获该特定异常(如果它在任何控制器中抛出)。然后你必须决定在这种情况下会发生什么(例如重定向到起始页面)。
甜,这正是我正在寻找而不是'rescue_action_in_public' – penger 2009-10-27 19:22:01
你可以将失败的代码包装在开始救援结束块中。
begin
# stuff that gets executed
...
# DangerousStatement
...
# stuff that doesn't get executed if dangerous statement raises an error
...
rescue
# set variables that are needed by other code and would have been set if dangerous statement succeeded
...
end
但是,这真的是你应该在开发模式下调试的东西。
假设你有一个控制器的“创造”的动作有问题,你可以这样做:
def create
@record.create(params[:record])
rescue ActiveRecord::StatementInvalid
flash[:notice] = "There was a problem, but we know about it."
redirect_to root_path
end
,做你想让用户看到了什么? – JRL 2009-10-27 18:03:56