Railsで404/500エラーの処理をする
application_controllerを編集
app/controllers/application_controller.rb
# 例外処理
rescue_from ActiveRecord::RecordNotFound, with: :render_404
rescue_from ActionController::RoutingError, with: :render_404
rescue_from Exception, with: :render_500
def render_404
render template: 'errors/error_404', status: 404, layout: 'application', content_type: 'text/html'
end
def render_500
render template: 'errors/error_500', status: 500, layout: 'application', content_type: 'text/html'
end
エラーページのviewファイルを作成
動的にページを表示する場合
app/views/errors/error_404.html.erb
とapp/views/errors/error_500.html.erb
を作成する。
(静的ページを表示する場合は、public
配下に作成)
ルートファイルを編集
config/routes.rb
の一番下に以下を書く。
config/routes.rb
get '*path', controller: 'application', action: 'render_404'
ローカル環境でエラー処理の動作確認をする場合
development環境でエラーページの動作を確認する場合は、config/environments/development.rb
を以下のようにfalse
にする。
config/environments/development.rb
config.consider_all_requests_local = false