跳至内容 跳至搜索

Action Dispatch PublicExceptions

当调用时,此中间件会渲染一个错误页面。默认情况下,如果预期返回 HTML 响应,它将渲染来自 /public 目录的静态错误页面。例如,当此中间件收到 500 响应时,它将渲染 /public/500.html 中找到的模板。如果设置了国际化语言环境,此中间件将尝试渲染 /public/500.<语言环境>.html 中的模板。如果没有找到国际化模板,它将回退到 /public/500.html

当发出内容类型不为 HTML 的请求时,此中间件将尝试将错误信息转换为相应的响应类型。

方法
C
N

属性

[RW] public_path

类公共方法

new(public_path)

# File actionpack/lib/action_dispatch/middleware/public_exceptions.rb, line 21
def initialize(public_path)
  @public_path = public_path
end

实例公共方法

call(env)

# File actionpack/lib/action_dispatch/middleware/public_exceptions.rb, line 25
def call(env)
  request      = ActionDispatch::Request.new(env)
  status       = request.path_info[1..-1].to_i
  begin
    content_type = request.formats.first
  rescue ActionDispatch::Http::MimeNegotiation::InvalidType
    content_type = Mime[:text]
  end
  body = { status: status, error: Rack::Utils::HTTP_STATUS_CODES.fetch(status, Rack::Utils::HTTP_STATUS_CODES[500]) }

  render(status, content_type, body)
end