Named Route Collection

向 Rails 其它组件提供路由相的关 x_path, x_url 方法。

include Enumerable,所以看到很多同名方法也就不奇怪了。它们意义和使用方式雷同,不再一一解释。

module ActionDispatch
  module Routing
    class RouteSet
      def initialize(request_class = ActionDispatch::Request)
        self.named_routes = NamedRouteCollection.new
        # ...
      end
    end
  end
end

各个实例方法

routes

url_helpers_module

route_defined?

helper_names

clear! & clear

add & []= # 主要作用,添加 x_url 和 x_path 辅助方法
get & []

names

path_helpers_module

除上述方法外,还有:

另外,还有私有方法 define_url_helper 我们使用的路由相关的 x_url 和 x_path 辅助方法就是由它而来的。

Url Helper

非常底层的实现,主要对外接口 self.create

当调用 Named Route Collection 的私有方法 define_url_helper 时会用到,部分内容是:

哪里调用它了?

1) @set.add_route 添加路由规则时有调用 named_routes[name]

2) 而 named_routes 就是 NamedRouteCollection 的实例对象:

3) 并且 []= 方法实际就是 add 方法,而 add 又调用了上面的 define_url_helper

最后更新于