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

Ruby on rails 如果没有路由匹配,则重定向到根页面,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,如果我输入了错误的路由或者如果没有路由匹配错误出现,那么我想重定向到根路径。我该怎么做 提前感谢您可以将404重定向到路由文件中(在底部) 要重定向到root,您可以这样做 match "*path" => redirect("/") 通过捕获异常,这一点和其他实现方法更为详细。将此语句作为config/routes.rb文件中的最后一个语句: match "*path" => redirect("/") “*路径”将匹配任何内容并重定向到根路径 有关更多信息,请查看和官方Rai

如果我输入了错误的路由或者如果没有路由匹配错误出现,那么我想重定向到根路径。我该怎么做


提前感谢

您可以将404重定向到路由文件中(在底部)

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

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

通过捕获异常,这一点和其他实现方法更为详细。

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

match "*path" => redirect("/")
“*路径”
将匹配任何内容并重定向到根路径

有关更多信息,请查看和官方Rails指南。

在Rails 4/5中,您可以

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

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

对于最新的Rails 4.2+而言,
匹配语法略有变化:

map.connect '*path', :controller => 'some_controller', :action => 'some_action'
将其放在项目的
config/routes.rb


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

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

get '*path' => redirect('/404.html')

此外,当您使用上述任何建议答案时,可能会出现错误
。如果未指定HTTP方法,则不应在路由器中使用“匹配”方法

如果是这种情况,您可以将
:via=>[:get,:post]
添加到重定向:

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

当我们将上述路线写在所有路线的底部时,它就起作用了。您如何以这种方式发送
:通知
:警报或
:flash
?也在rails 6上工作,谢谢这在passenger中不起作用。一旦乘客启动->来自应用程序的消息:在没有指定HTTP方法的情况下,您不应该在路由器中使用
match
方法。如果要将操作同时公开给GET和POST,请通过:[:GET,:POST]
选项添加
。如果要公开要获取的操作,请在路由器中使用
GET
:而不是:match“controller#action”Do:GET“controller#action”(ArgumentError)am位于rails 6上,此操作不起作用。如果出现错误,则在未指定HTTP方法的情况下,不应在路由器中使用
match
方法。如果要将操作同时公开给GET和POST,请通过:[:GET,:POST]
选项添加
。如果要公开要获取的操作,请在路由器中使用
GET
:而不是:匹配“controller#action”Do:GET“controller#action”