我必須調試一些與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