12

如果我输入了错误的路由或者没有路由匹配错误出现,那么我想重定向到 root_path。我怎样才能做到这一点?

预先感谢

4

6 回答 6

25

在 Rails 4/5 中,您可以

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

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

于 2013-08-10T08:01:49.990 回答
17

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

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

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

有关更多信息,请查看官方 Rails 指南中的路线通配和重定向

于 2012-12-31T10:10:12.357 回答
4

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

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

要重定向到 root,您可以这样做。

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

这个答案中有更多细节以及通过捕获异常来实现它的替代方法。

于 2012-12-31T10:05:08.270 回答
3

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

把它放在项目的底部config/routes.rb

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

于 2016-03-13T19:31:49.583 回答
1

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

get '*path' => redirect('/404.html')
于 2019-05-20T19:43:23.483 回答
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]
于 2019-09-27T08:46:18.280 回答