显示异常的错误页面

如果你想向用户展示有意义的错误,而不是简单的“对不起,出错了”,Rails 有一个很好的实用工具。

打开文件 app/controllers/application_controller.rb,你应该找到这样的东西:

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

我们现在可以添加一个 rescue_from 来从特定错误中恢复:

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

建议不要从 ExceptionStandardError 营救,否则 Rails 将无法在出现错误时显示有用的页面。