如何处理rails3中的404/500等错误

嘿,我希望你能帮助我。

我试图找到一种方法将用户定向到我公共文件夹中的默认错误页面404.html和500.html。

因此,当存在路由或nomethod错误时,它应该指向那里。 我已经在我的应用程序控制器中尝试了一些东西,但它没有用。

非常感谢!!

在生产模式下运行时,Rails会自动为您执行此操作。 当您将应用程序上传到实时服务器时,Rails负责处理这些exception并使用正确的标头状态呈现正确的错误页面。 如果您正在尝试查看这些页面的外观(用于测试或其他内容),只需通过http://localhost:3000/404.html直接访问它们

每当您在实时服务器上设置Rails应用程序时(让我们以Apache为例),您将站点root作为应用程序中的/public文件夹。 然后,每当向该服务器地址发出请求时,Apache首先查找该公用文件夹并尝试提供静态资产(这是[environment].rb的可配置选项)。 如果找不到请求的页面,则通过Ruby堆栈转发请求。

在生产模式下,如果Rails遇到未处理的错误(即开始,救援),它会将错误一直抛到堆栈,然后告诉Apache(再次,在我的示例中)呈现适当的错误。

以下是您在开发模式中看到的一些常见错误以及它们在生产模式下呈现的内容:

 ActiveRecord::RecordNotFound => 404 (page not found) nil.method => 500 (server error) unless you turn off whiny nils ActionController::RoutingError => 404 (page not found) 

如果在生产模式下运行,则会自动发生 – 无需您手动执行此操作。

看一下这篇文章 ,重定向导致路由错误的所有请求。