如果我输入错误的路由,或者如果没有路由匹配错误,那么我想重定向到root_path。我该怎么做呢?
提前致谢
在Rails 4/5中
get '*path' => redirect('/')
编辑。正如@VenkatK所指出的,这应该是最后一条路线。评估路线的方式是,顶部的路线比底部的路线更重要。
将此语句置于config/routes.rb
文件的最后:
match "*path" => redirect("/")
"*path"
将匹配任何内容并将重定向到根路径。
有关更多信息,请查看官方Rails指南中的路由globbing和重定向。
你可以通过把它放在你的路由文件(在底部)来重定向404。
map.connect '*path', :controller => 'some_controller', :action => 'some_action'
要重定向到根目录,可以这样做。
match "*path" => redirect("/")
在这个答案中有更多的细节,以及通过捕获异常来实现它的替代方法。
对于最新的Rails 4.2+, match
语法略有变化:
把它放在项目的config/routes.rb
match '*path', to: redirect('/'), via: :all
在'public/404.html'中创建文件,如果没有找到,则重定向到:
get '*path' => redirect('/404.html')
另外,当您使用上述任何建议的答案时,您可能会得到错误You should not use the "match" method in your router without specifying an HTTP method
。
如果是这种情况,您可以将:via => [:get, :post]
添加到您的重定向:
match '*path' => redirect('/'), :via => [:get, :post]