顯示異常的錯誤頁面

如果你想向使用者展示有意義的錯誤,而不是簡單的“對不起,出錯了”,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 將無法在出現錯誤時顯示有用的頁面。