やったこと
Rails5 にて、エラーページを表示する方法を調べました。
静的なページ、動的なページのどちらにするかで方法が変わります。
確認環境
$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]
$ rails --version
Rails 5.2.3
調査
静的なページを表示
すでに用意されているものを利用します。
config/environments/development.rb
config.consider_all_requests_local = false
例えば存在していないページにアクセスした時、 public/404.html が使われます。
動的なページを表示
config/environments/development.rb
config.consider_all_requests_local = false
エラーページの view を用意します。
app/views/errors/error_404.html.erb
404 dayo
例外を制御します。今回は 404エラーの時の振る舞いを定義します
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
rescue_from ActionController::RoutingError, with: :render_404
def render_404
logger.debug(9999)
render template: 'errors/error_404', status: 404, layout: 'application', content_type: 'text/html'
end
end
最後にルーティングの一番下に下記を追加してください
config/routes.rb
get '*path', controller: 'application', action: 'render_404'