2009-10-27 70 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