如果我输入错误的路线或没有路线匹配错误,那么我想重定向到root_path。我怎么能这样做?
感谢提前
答案 0 :(得分:22)
在Rails 4/5中你可以
get '*path' => redirect('/')
编辑。正如@VenkatK所指出的,这应该是最后的路线。评估路线的方式是,最重要的路线比最底层的路线更重要。
答案 1 :(得分:16)
将此语句作为config/routes.rb
文件中的最后一个:
match "*path" => redirect("/")
"*path"
将匹配任何内容,并将重定向到根路径。
有关详细信息,请查看官方Rails指南中的route globbing和redirection。
答案 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]