2015年4月18日土曜日

rails4 - カスタムエラーページの作成 -

rails4を使用したカスタムエラーページの作成方法です。public配下のデフォルトエラーページでも動作に問題はありませんが、エラーページを作成したほうがSEO的には良いので、作成することをお薦めします。

環境

  • rails4.1.2
  • Foundation5

はじめに

今回の対応で有効なrailsのバージョンはrails4.1以上です。railsのバージョンが4.1より低い場合は、バージョンをあげるか、他のやり方を選択する必要があります。

コントローラーの作成

エラーをハンドリングするコントローラーを作成します


bundle exec rails generate controller errors not_found_error internal_server_error

routes.rb

エラー画面は本番(production)環境にだけに適用します。
開発時は、開発(development)環境でカスタムエラー画面を確認するときだけコメントアウトします。でないとエラーが画面に表示されなくなって、開発効率が落ちます。
もちろん、コミットするときはコメントアウトを外します。


  #if Rails.env.production?
    get '404', :to => 'errors#page_not_found'
    get '422', :to => 'errors#server_error'
    get '500', :to => 'errors#server_error'
  #end

ErrorsControllerの実装

layoutやtemplateは作成しているWEBアプリに応じて自分で用意します


# coding: utf-8
class ErrorsController < ApplicationController

  def page_not_found
    respond_to do |format|
      format.html { render template: 'errors/not_found_error', layout: 'layouts/web/application', status: 404 }
      format.all  { render nothing: true, status: 404 }
    end
  end

  def server_error
    respond_to do |format|
      format.html { render template: 'errors/internal_server_error', layout: 'layouts/web/application', status: 500 }
      format.all  { render nothing: true, status: 500}
    end
  end

end

config/application.rb


config.exceptions_app = self.route

config/production.rb, config/development.rb


config.consider_all_requests_local = false

カスタムエラー画面がdevelopment環境で確認できたら、上記のdevelopment.rbはtrueに変更します。でないと、開発環境でもカスタムエラー画面に遷移するので、デバッグ開発がやりずらくなってしまいます。

全ての設定が完了したら、サーバーを再起動して、routesに設定されていないurlに遷移してみてください。カスタムしたエラーページが表示されるはずです。

以上

参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...