0

Rails のカスタム エラー ビューに関する多くの質問を見てきましたが、まだ問題の解決策が見つかりません!

404 の場合、現在、routes.rb の下部にキャッチオールがあり、「webroot/adsfsdfasdf/」などの不明な名前のルートをリダイレクトしますが、「webroot/people/x1df1231」などの無効な ID で失敗します - ActiveRecord::RecordNotFound ( ID=x1df1231 の人物が見つかりませんでした)

500 については、まだ解決策が見つかりません。

現在、Rails をアップグレードすることはできません。

4

2 に答える 2

1

apache または nginx のいずれかを使用して本番環境でこれを行う場合は、レールではなくサーバー構成ファイルで設定できます。

于 2012-11-03T05:19:19.127 に答える
0

私が見つけた最善の解決策は、「around_filter」を使用することです

application_controllerの上に:

around_filter :handle_errors

そしてその下

def handle_errors
    yield
    rescue => e
        logger.debug "\n ====== ERROR ====== \n\n #{e.message} \n\n #{e.annoted_source_code} \n\n #{e.backtrace} \n\n ================= \n\n"
        if e.is_a?(ActiveRecord::RecordNotFound)
            render '/errors/e404'
        else
            render '/errors/e500'
        end
end

ここで、'/errors/e404' はテンプレートです (例: views/errors/e404.html.haml) routes.rb への変更はありません。元のキャッチオール ルートでは、アプリケーションが壊れることがあります。

于 2012-11-02T17:11:15.023 に答える