Ruby on rails 轨道路线,如果没有匹配的路线

Ruby on rails 轨道路线,如果没有匹配的路线,ruby-on-rails,routing,Ruby On Rails,Routing,如果没有匹配的路由,是否有解决方案将用户重定向到特定控制器#操作?我有这样一条“最后的规则”: match ":rest" => "application#notfound", :constraints => { :rest => /.*/ } 将所有“其他”内容重定向到应用程序#notfound。问题是,具有自己路由的插件设置在shis规则之下,并且永远不会被调用。将此规则放在最后。。从上到下路由匹配,因此如果它确实找到了匹配,那么它将停止在那里。将此规则放在最后。。从上

如果没有匹配的路由,是否有解决方案将用户重定向到特定控制器#操作?我有这样一条“最后的规则”:

 match ":rest" => "application#notfound", :constraints => { :rest => /.*/ }

将所有“其他”内容重定向到应用程序#notfound。问题是,具有自己路由的插件设置在shis规则之下,并且永远不会被调用。

将此规则放在最后。。从上到下路由匹配,因此如果它确实找到了匹配,那么它将停止在那里。

将此规则放在最后。。从上到下路由匹配,因此如果它确实找到了匹配项,那么它就停在那里。

也许这不是最好的方法,但它会在您找不到更好的解决方案时起作用

对于Rails2.3,在应用程序控制器上捕获异常,如

rescue_from(ActionController::RoutingError) { redirect_to "/xpto" #add your code here }
轨道3

在初始值设定项处输入如下代码:

module ActionDispatch
  class ShowExceptions
   def render_exception(env, exception)
     if exception.kind_of? ActionController::RoutingError
       render(500, 'it was routing error')
     else
       render(500, "some other error")
     end
   end
 end
结束

或者更干净的东西,比如:

或:


但也许这最后一场比赛对你不好,因为它会覆盖插件/引擎的所有路由。我认为最好的解决方案是使用定制机架中间件来处理特殊情况。

也许这不是最好的方法,但它可以在您找不到更好的解决方案时工作

对于Rails2.3,在应用程序控制器上捕获异常,如

rescue_from(ActionController::RoutingError) { redirect_to "/xpto" #add your code here }
轨道3

在初始值设定项处输入如下代码:

module ActionDispatch
  class ShowExceptions
   def render_exception(env, exception)
     if exception.kind_of? ActionController::RoutingError
       render(500, 'it was routing error')
     else
       render(500, "some other error")
     end
   end
 end
结束

或者更干净的东西,比如:

或:


但也许这最后一场比赛对你不好,因为它会覆盖插件/引擎的所有路由。我认为最好的解决方案是使用定制的机架中间件来处理特殊情况。

您肯定不是唯一一个遇到此问题的人。我知道这很令人沮丧,但请给它一些时间——我相信Rails团队会做出一些简单而优雅的东西。我也处于类似的位置,只是我需要知道用户输入的错误url资源


快速的谷歌搜索,我发现这篇文章展示了一个。该解决方案涉及路由全球化,解决了我处理错误url和捕获输入url的需要。希望这有帮助

你肯定不是唯一有这个问题的人。我知道这很令人沮丧,但请给它一些时间——我相信Rails团队会做出一些简单而优雅的东西。我也处于类似的位置,只是我需要知道用户输入的错误url资源


快速的谷歌搜索,我发现这篇文章展示了一个。该解决方案涉及路由全球化,解决了我处理错误url和捕获输入url的需要。希望这有帮助

创建一条全面路线,并将其作为routes.rb文件中的最后一条规则

match "*rest" => "application#notfound"

您还可以通过控制器中的
params[:rest]
获取作为参数的路径。

创建一条全面路由,并将其作为routes.rb文件中的最后一条规则

match "*rest" => "application#notfound"

您还可以通过控制器中的
params[:rest]
获得作为参数的路径。

我把它作为最后一条规则。问题是,插件将在应用程序规则之后添加,因此我必须找到另一种方法:(我知道问题出在哪里了。插件应该为您提供一种调用其路由的方式。例如Deviate为路由方法提供Deviate_。我把它作为最后一条规则。问题是,插件将添加到应用程序规则之后,因此我必须找到另一种方式:(我知道问题出在哪里了。插件应该为您提供一种调用其路由的方式。例如,designe为路由方法提供designe_。为什么不简单地编辑public/404.html?为什么不简单地编辑public/404.html?