Ruby on Rails - 捕获缺少路线的通配符路由,在具有其他路由文件时不起作用



我实现了一个简单的自定义错误解决方案。这个:http://ramblinglabs.com/blog/2012/01/rails-3-1-adding-custom-404-and-500-error-pages

除了routes.rb文件中丢失的路由外,其他所有路由都运行良好。。

为了在缺少路由时找到我的error_controller,我使用了通配符解决方案:match '*not_found', to: 'errors#error_404'

但是。。。现在,当我尝试进入我的网站的一个子部分时,它位于:/管理员,我进入错误页面。wilcard被触发,即使是艰难的管理部分的路由是在另一个路由文件中定义的,位于:config/routes/admin.rb 下

我能做什么?感谢

编辑:使用rails 3.0.20和ruby 1.8.7

如果您使用的是Rails 3.2+,那么有一个更简单的路由解决方案。首先在"config/application.rb"中将您的应用程序设置为错误处理程序

config.exceptions_app = self.routes

现在,当有一个路由时,你的应用程序会查找你的路由来处理它。在"config/routes.rb"中,你可以添加一个路由,例如:

match "/404", :to => "errors#not_found"

更详细的解释可以在这里找到。

好吧,直到我更新到Rails 3.2+

我只是将'*not_found', to: 'errors#error_404'放入加载的最后一个路由文件中。

这样,它真的在路线的尽头,现在我所有的路线都在工作。并且在需要时仍然触发错误。

相关内容

  • 没有找到相关文章

最新更新