Class: ActionDispatch::Routing::RouteSet::NamedRouteCollection
- Inherits:
-
Object
- Object
- ActionDispatch::Routing::RouteSet::NamedRouteCollection
show all
- Includes:
- Enumerable
- Defined in:
- actionpack/lib/action_dispatch/routing/route_set.rb
Overview
A NamedRouteCollection instance is a collection of named routes, and also maintains an anonymous module that can be used to install helpers for the named routes.
Defined Under Namespace
Classes: UrlHelper
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Enumerable
#as_json, #compact_blank, #exclude?, #excluding, #in_order_of, #including, #index_by, #index_with, #many?, #maximum, #minimum, #pick, #pluck, #sole
Constructor Details
Returns a new instance of NamedRouteCollection.
87
88
89
90
91
92
93
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 87
def initialize
@routes = {}
@path_helpers = Set.new
@url_helpers = Set.new
@url_helpers_module = Module.new
@path_helpers_module = Module.new
end
|
Instance Attribute Details
#path_helpers_module ⇒ Object
Returns the value of attribute path_helpers_module.
84
85
86
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 84
def path_helpers_module
@path_helpers_module
end
|
#url_helpers_module ⇒ Object
Returns the value of attribute url_helpers_module.
84
85
86
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 84
def url_helpers_module
@url_helpers_module
end
|
Instance Method Details
#add(name, route) ⇒ Object
Also known as:
[]=
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 118
def add(name, route)
key = name.to_sym
path_name = :"#{name}_path"
url_name = :"#{name}_url"
if routes.key? key
@path_helpers_module.undef_method path_name
@url_helpers_module.undef_method url_name
end
routes[key] = route
helper = UrlHelper.create(route, route.defaults, name)
define_url_helper @path_helpers_module, path_name, helper, PATH
define_url_helper @url_helpers_module, url_name, helper, UNKNOWN
@path_helpers << path_name
@url_helpers << url_name
end
|
#add_url_helper(name, defaults, &block) ⇒ Object
Given a name, defines name_path and name_url helpers. Used by ‘direct’, ‘resolve’, and ‘polymorphic’ route helpers.
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 165
def add_url_helper(name, defaults, &block)
helper = CustomUrlHelper.new(name, defaults, &block)
path_name = :"#{name}_path"
url_name = :"#{name}_url"
@path_helpers_module.module_eval do
redefine_method(path_name) do |*args|
helper.call(self, args, true)
end
end
@url_helpers_module.module_eval do
redefine_method(url_name) do |*args|
helper.call(self, args, false)
end
end
@path_helpers << path_name
@url_helpers << url_name
self
end
|
#clear! ⇒ Object
Also known as:
clear
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 104
def clear!
@path_helpers.each do |helper|
@path_helpers_module.remove_method helper
end
@url_helpers.each do |helper|
@url_helpers_module.remove_method helper
end
@routes.clear
@path_helpers.clear
@url_helpers.clear
end
|
#each(&block) ⇒ Object
150
151
152
153
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 150
def each(&block)
routes.each(&block)
self
end
|
#get(name) ⇒ Object
Also known as:
[]
137
138
139
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 137
def get(name)
routes[name.to_sym]
end
|
#helper_names ⇒ Object
100
101
102
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 100
def helper_names
@path_helpers.map(&:to_s) + @url_helpers.map(&:to_s)
end
|
#key?(name) ⇒ Boolean
141
142
143
144
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 141
def key?(name)
return unless name
routes.key? name.to_sym
end
|
159
160
161
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 159
def length
routes.length
end
|
155
156
157
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 155
def names
routes.keys
end
|
#route_defined?(name) ⇒ Boolean
95
96
97
98
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 95
def route_defined?(name)
key = name.to_sym
@path_helpers.include?(key) || @url_helpers.include?(key)
end
|