我正在尝试使用 Haml 从公共目录自定义错误页面。
当我转到路线localhost:3000/404
时,它显示:
'Routing Error'
我不明白为什么。有人可以帮助我理解为什么会发生这种情况吗?
听起来您正在修改公共目录中的 404.html 文件并将其重命名为 404.html.haml。
这将阻止 Rails 在默认路由中找到它。
如果您希望应用自定义错误页面,我建议您使用"动态轨道错误页面",其中建议以下步骤:
为自定义错误生成控制器和视图:
rails generate controller errors four_oh_four_not_found five_hundred_error
确保发送正确的状态代码,否则 Rails 将发送 200 状态代码:
class ErrorsController < ApplicationController def four_oh_four_not_found render(:status => 404) end def five_hundred_error render(:status => 500) end end
配置路由:
match "/404", :to => "errors#four_oh_four_not_found" match "/500", :to => "errors#five_hundred_error"
告诉 Rails 将我们的自定义路由用于错误页面:
config.exceptions_app = self.routes
删除公开的默认 404.html 和 500.html 视图。
有很多 StackOverflow 问题处理 Rails 中的错误页面,例如:
- "如何重定向到routes.rb中的404页面?">
- "Rails 4:404、500 的自定义错误页面,默认的 500 错误消息来自哪里?">