如果我输入了错误的路由或者没有路由匹配错误出现,那么我想重定向到 root_path。我怎样才能做到这一点?
预先感谢
在 Rails 4/5 中,您可以
get '*path' => redirect('/')
编辑。正如@VenkatK 所指出的,这应该是最后一条路线。评估路线的方式是顶部的比底部的更重要。
您可以通过将其放入您的路线文件(在底部)来重定向 404。
map.connect '*path', :controller => 'some_controller', :action => 'some_action'
要重定向到 root,您可以这样做。
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]