嘿,我希望你能帮助我。如何处理像rails3中的404/500错误
我试图找到一种方法,将用户定向到默认的错误页面404.html和500.html在我的公用文件夹。
因此,当存在路由或nomethod错误应该有指向。 我已经尝试了一些东西在我的应用程序控制器,但它没有奏效。
非常感谢!
嘿,我希望你能帮助我。如何处理像rails3中的404/500错误
我试图找到一种方法,将用户定向到默认的错误页面404.html和500.html在我的公用文件夹。
因此,当存在路由或nomethod错误应该有指向。 我已经尝试了一些东西在我的应用程序控制器,但它没有奏效。
非常感谢!
Rails会在生产模式下自动执行此操作。当您将应用程序上传到实时服务器时,Rails会负责处理这些异常并以正确的标题状态呈现正确的错误页面。如果你想看到那些网页是什么样子(用于测试或东西),只需要直接访问它们通过http://localhost:3000/404.html
当你设置你的Rails应用程序的实时服务器上(让我们使用Apache为例),你将网站根作为您的应用程序中的/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)
如果在生产模式下运行自动发生 - 不需要你做手工。
看一看this post重定向导致路由错误的所有请求。
我以为把公共文件夹404.htm和500.htm是好的。但我不确定。 – PeterWong 2011-01-09 17:07:32
我在默认情况下获得了那些内容。但是,如果出现错误,他们不会出现 – daniel 2011-01-09 17:08:40