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

时间:2012-12-31 10:02:36

标签: ruby-on-rails ruby-on-rails-3

如果我输入错误的路线或没有路线匹配错误,那么我想重定向到root_path。我怎么能这样做?

感谢提前

6 个答案:

答案 0 :(得分:22)

在Rails 4/5中你可以

get '*path' => redirect('/')

编辑。正如@VenkatK所指出的,这应该是最后的路线。评估路线的方式是,最重要的路线比最底层的路线更重要。

答案 1 :(得分:16)

将此语句作为config/routes.rb文件中的最后一个:

match "*path" => redirect("/")

"*path"将匹配任何内容,并将重定向到根路径。

有关详细信息,请查看官方Rails指南中的route globbingredirection

答案 2 :(得分:4)

您可以通过将其放入路线文件(位于底部)来重定向404。

map.connect '*path', :controller => 'some_controller', :action => 'some_action'

要重定向到root,您可以执行此操作。

match "*path" => redirect("/")

answer中有更多详细信息,以及通过捕获异常来执行此操作的其他方法。

答案 3 :(得分:3)

对于最新的Rails 4.2+,match语法略有改变:

将其放在项目config/routes.rb

的底部

match '*path', to: redirect('/'), via: :all

答案 4 :(得分:0)

在“ public / 404.html”中创建文件,如果找不到路径,则重定向至:

Region

答案 5 :(得分:0)

此外,当您使用上述建议的任何答案时,可能会收到错误You should not use the "match" method in your router without specifying an HTTP method

在这种情况下,您可以将:via => [:get, :post]添加到重定向中:

match '*path' => redirect('/'), :via => [:get, :post]