如何使用 Haml 从公共目录修改 Rails 错误页面



我正在尝试使用 Haml 从公共目录自定义错误页面。

当我转到路线localhost:3000/404时,它显示:

'Routing Error'

我不明白为什么。有人可以帮助我理解为什么会发生这种情况吗?

听起来您正在修改公共目录中的 404.html 文件并将其重命名为 404.html.haml。

这将阻止 Rails 在默认路由中找到它。

如果您希望应用自定义错误页面,我建议您使用"动态轨道错误页面",其中建议以下步骤:

  1. 为自定义错误生成控制器和视图:

    rails generate controller errors four_oh_four_not_found five_hundred_error
    
  2. 确保发送正确的状态代码,否则 Rails 将发送 200 状态代码:

    class ErrorsController < ApplicationController
    def four_oh_four_not_found
    render(:status => 404)
    end
    def five_hundred_error
    render(:status => 500)
    end
    end
    
  3. 配置路由:

    match "/404", :to => "errors#four_oh_four_not_found"
    match "/500", :to => "errors#five_hundred_error"
    
  4. 告诉 Rails 将我们的自定义路由用于错误页面:

    config.exceptions_app = self.routes
    
  5. 删除公开的默认 404.html 和 500.html 视图。

有很多 StackOverflow 问题处理 Rails 中的错误页面,例如:

  • "如何重定向到routes.rb中的404页面?">
  • "Rails 4:404、500 的自定义错误页面,默认的 500 错误消息来自哪里?">

最新更新