Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save seyhunak/3077498 to your computer and use it in GitHub Desktop.
Save seyhunak/3077498 to your computer and use it in GitHub Desktop.
Rails 3.1 - Adding custom 404 and 500 error pages
class ApplicationController < ActionController::Base
# ...
unless Rails.application.config.consider_all_requests_local
rescue_from Exception, with: :render_500
rescue_from ActionController::RoutingError, with: :render_404
rescue_from ActionController::UnknownController, with: :render_404
rescue_from ActionController::UnknownAction, with: :render_404
rescue_from ActiveRecord::RecordNotFound, with: :render_404
end
private
def render_404(exception)
@not_found_path = exception.message
respond_to do |format|
format.html { render template: 'errors/error_404', layout: 'layouts/application', status: 404 }
format.all { render nothing: true, status: 404 }
end
end
def render_500(exception)
@error = exception
respond_to do |format|
format.html { render template: 'errors/error_500', layout: 'layouts/application', status: 500 }
format.all { render nothing: true, status: 500}
end
end
# ...
end
%h2 404
%div
%h3 We're sorry
%p
The content that you requested could not be found.
%p
You tried to access '#{@not_found_path}', which is not a valid page.
%p
Want to
%a{href: root_path} go back to our home page
and try again?
class ErrorsController < ApplicationController
def error_404
@not_found_path = params[:not_found]
end
def error_500
end
end
rails generate controller errors error_404 error_500
get "errors/error_404"
get "errors/error_500"
unless Rails.application.config.consider_all_requests_local
match '*not_found', to: 'errors#error_404'
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment