Ruby on rails 如果用户访问错误的url,请在rails中将\u重定向到有效的url

Ruby on rails 如果用户访问错误的url,请在rails中将\u重定向到有效的url,ruby-on-rails,url,before-filter,Ruby On Rails,Url,Before Filter,如果用户访问错误的url,然后应用程序使用before筛选器自动重定向到有效url,如何进行救援,例如我有如下有效url: http:://localhost:3000/stores/ http://localhost:3000/test/ 如果我在浏览器中使用错误的url访问,例如: http:://localhost:3000/stores/ http://localhost:3000/test/ 我希望我的rails应用程序自动重定向到有效的url=>http://localhos

如果用户访问错误的url,然后应用程序使用before筛选器自动重定向到有效url,如何进行救援,例如我有如下有效url:

http:://localhost:3000/stores/
http://localhost:3000/test/
如果我在浏览器中使用错误的url访问,例如:

http:://localhost:3000/stores/
http://localhost:3000/test/
我希望我的rails应用程序自动重定向到有效的url=>
http://localhost:3000/stores/
,如果我试图访问上述错误的url。你怎么知道的


感谢您的用户输入错误地址时,经验法则是向用户显示404。如果您确实需要从未定义的URL重定向用户,并且您确信这是您的用例,您可以使用routes redirect call来执行此操作:

以下是如何:

对于通配符重定向,它可能类似于:

get'*path'=>重定向('/')
在routes.rb的末尾


再一次-我建议不要这样做

我喜欢clean
rescue\u from
子句,这三个子句中的一个(或全部)应该起作用:

在您的
应用程序中\u controller.rb

  rescue_from ActionController::RoutingError,       :with => :redirect_missing
  rescue_from ActionController::UnknownController,  :with => :redirect_missing
  rescue_from ActionController::UnknownAction,      :with => :redirect_missing

  def redirect_missing
    # do your thing, e.g.
    redirect_to root_path
  end

希望这有帮助

重定向的路由是动态的还是静态的?我在路由中添加get'*a',到:redirect('/stores'),但当我尝试访问url=>时。我仍然收到错误抱歉,更正了我的答案-它的
get'*path'=>重定向('/')
这样做是个坏主意-拯救错误不应该是你的控制流。路由用于处理路径;)