ruby – Rails将无效路由重定向到root

前端之家收集整理的这篇文章主要介绍了ruby – Rails将无效路由重定向到root前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我的网站是www.foo.com,如果用户输入www.foo.com/blahblahblah,它会说/ blahblahblah是一条无效的路径(显然).但我希望它改为重定向到root_path,以便控制器可以处理URL – 应该呈现页面www.foo.com我想拉文本blahblahblah并用它做一些事情.我该怎么做呢?

解决方法

有几种可能性.这是一个.您可以将其添加到routes.rb的底部
match ':not_found' => 'my_controller#index',:constraints => { :not_found => /.*/ }

这将建立一个catch-all路由,使MyController的索引操作处理任何缺少的路径;它可以通过查看params [:not_found]并做任何想要的事情来检测它们,例如重定向到root_path(redirect_to root_url),根据坏路径战略性地重定向到某个地方,渲染一些特殊的东西,检查引用者/引用者的线索来源等

:constraints选项是必要的;否则not_found参数将无法包含斜杠和点等特殊字符.

把它放在路线的底部,因为显然它会匹配所有东西,并且你想让你的其他路线首先在路径上破解.

如果你只想重定向,仅此而已,你可以这样做(再次,在底部):

match ':not_found' => redirect('/'),:constraints => { :not_found => /.*/ }

猜你在找的Ruby相关文章