method

failsafe_response_body

failsafe_response_body(status)
private

No documentation available.

# File actionpack/lib/action_controller/dispatcher.rb, line 63
        def failsafe_response_body(status)
          error_path = "#{error_file_path}/#{status.to_s[0..3]}.html"

          if File.exist?(error_path)
            File.read(error_path)
          else
            "<html><body><h1>#{status}</h1></body></html>"
          end
        end

1Note

Bug that looks for "500 .html" rather than "500.html"

kieran ยท Jul 28, 2008

There is a very small bug in this method of Rails that causes error pages you change in public/ not to be shown, because Rails looks for "404 .html" and "500 .html" (note the space). The fix is simple.

#{status.to_s[0..3]}

needs to become

#{status.to_s[0...3]}

If you're like me and don't want to edit Rails itself, at the bottom of environment.rb, stick some code that overwrites this method to fix the bug. We have the following:

module ActionController
class Dispatcher
  class << self
    private
      def failsafe_response_body(status)
        error_path = "#{error_file_path}/#{status.to_s[0...3]}.html"
        if File.exist?(error_path)
          File.read(error_path)
        else
          "<html><body><h1>#{status}</h1></body></html>"
        end
      end
  end
end
end