Ruby on Rails ActionController Display error pages for exceptions


Example

If you want to display to your users meaningful errors instead of simple "sorry, something went wrong", Rails has a nice utility for the purpose.

Open the file app/controllers/application_controller.rb and you should find something like this:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
end

We can now add a rescue_from to recover from specific errors:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  rescue_from ActiveRecord::RecordNotFound, with: :record_not_found

  private

  def record_not_found
    render html: "Record <strong>not found</strong>", status: 404
  end
end

It's recommended not to rescue from Exception or StandardError otherwise Rails won't be able to display helpful pages in case of errors.