Rails5 でエラーページを表示する
Ruby Ruby on Rails
Published: 2019-05-09

やったこと

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'

参考