2009-10-27 59 views
1

我必须调试一些与db相关的错误,并且在db引起错误时一直持续监视日志。既然错误已经登录,我想有这样的例外:抑制浏览器中的异常

的ActiveRecord :: StatementInvalid

被抑制,使得用户将不会看到“出事了页面”。该错误仅限于应用程序的一小部分,我们希望在解决该问题后删除该抑制。

谢谢!

+0

,做你想让用户看到了什么? – JRL 2009-10-27 18:03:56

回答

3

您可以在您的ApplicationController中添加rescue_from行,以捕获该特定异常(如果它在任何控制器中抛出)。然后你必须决定在这种情况下会发生什么(例如重定向到起始页面)。

+0

甜,这正是我正在寻找而不是'rescue_action_in_public' – penger 2009-10-27 19:22:01

0

你可以将失败的代码包装在开始救援结束块中。

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 

但是,这真的是你应该在开发模式下调试的东西。

1

假设你有一个控制器的“创造”的动作有问题,你可以这样做:

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