Railsの404,500エラーページをカスタマイズ
Railsはエラーページをもともと用意してくれていて本番で動かすと
そこに飛ばしてくれるので、まぁいいっちゃいいのですが、
簡単に設定できるのでやってしまえばいいかと。
(レイアウトとかそのまま使えてサイト内ページっぽくなるし)
■環境 Rails 4.0.3 Ruby 2.1.1
とりあえずローカルで見たいのでWEBric(rails s)を本番設定で起動して確認します。
(developmentのままだといつもの赤いページが表示されます)
まず、ActionController::RoutingErrorを拾うためにroutesに設定が必要です。
# config/routes.rb # どこにも当てはまらなかったものを取得するので最終行に書いて下さい。 get '*path', to: 'application#render_404'
次にapplicationコントローラに設定を書きます。
class ApplicationController < ActionController::Base protect_from_forgery with: :exception rescue_from ActiveRecord::RecordNotFound, with: :render_404 rescue_from ActionController::RoutingError, with: :render_404 rescue_from Exception, with: :render_500 def render_404(exception = nil) if exception logger.info "Rendering 404 with exception: #{exception.message}" end render template: "errors/error_404", status: 404, layout: 'application' end def render_500(exception = nil) if exception logger.info "Rendering 500 with exception: #{exception.message}" end render template: "errors/error_500", status: 500, layout: 'application' end end
あとはviews以下にerrorsディレクトリを作ってそれぞれ
error_400.slim(haml)とerror_500.slimを置いて
好きなようにデザインして下さい。
applicationコントローラじゃなくてerorrsコントローラとかにしたいとかは
適当にパスを書き換えればできます。