ruby on rails -如果没有路由匹配,则重定向到根页面



如果我输入错误的路由,或者如果没有路由匹配错误,那么我想重定向到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]

相关内容

  • 没有找到相关文章

最新更新