2011-12-13 11 views
1

私はRails 3.1.2でアプリケーションを開発していますが、このバージョンのレールではエラー/例外(404など)で動作するドキュメントが見つかりません。私は解決策を見つけることができますどこでアプリケーションコントローラruby​​ on rail 3.1グローバル例外ハンドラ

rescue_from ActiveRecord::RecordNotFound,ActionController::RoutingError, 
      ActionController::UnknownController, ActionController::UnknownAction, :NoMethodError, :with => :handle_exception 

    def handle_exception 
    render :template => 'error_pages/error' 
    end 

environment/development.rb 

config.consider_all_requests_local = false 

私はのようなものを試してみましたか?事前に

おかげで... action_dispatch/middleware/show_exceptions

答えて

4

これは動作するはずです:アプリケーションのコントローラで

class NotFound < StandardError; end 
    rescue_from NotFound, :with => :handle_exception 

    def handle_exception 
    render :template => 'error_pages/error' 
    end 
+0

を私が確認します。これは動作します。 –

+0

追加したいだけです:「終了」の代わりに「終了」を使用することは無効であるようです。 –

0

ルック。ソースのドキュメントから

は:(あなたのケースでのRails、)包まれたアプリケーションは、unrescued例外が発生したときに

# This middleware rescues any exception returned by the application 
# and wraps them in a format for the end user. 

短編小説の短い、それはActionDispatch::ShowExceptions.render_exceptionをレンダリングします。

デフォルトの実装を調べると、実稼働環境に表示されるようなものがpublic/500.htmlというようにレンダリングされます。独自の実装を追加するのに適した方法またはメソッドチェーンを上書きします。