Class: ActionDispatch::Routing::RouteSet::NamedRouteCollection::UrlHelper
- Inherits:
-
Object
- Object
- ActionDispatch::Routing::RouteSet::NamedRouteCollection::UrlHelper
show all
- Defined in:
- actionpack/lib/action_dispatch/routing/route_set.rb
Defined Under Namespace
Classes: OptimizedUrlHelper
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(route, options, route_name) ⇒ UrlHelper
Returns a new instance of UrlHelper.
254
255
256
257
258
259
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 254
def initialize(route, options, route_name)
@options = options
@segment_keys = route.segment_keys.uniq
@route = route
@route_name = route_name
end
|
Instance Attribute Details
#route_name ⇒ Object
Returns the value of attribute route_name
186
187
188
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 186
def route_name
@route_name
end
|
Class Method Details
.create(route, options, route_name) ⇒ Object
174
175
176
177
178
179
180
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 174
def self.create(route, options, route_name)
if optimize_helper?(route)
OptimizedUrlHelper.new(route, options, route_name)
else
new(route, options, route_name)
end
end
|
.optimize_helper?(route) ⇒ Boolean
182
183
184
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 182
def self.optimize_helper?(route)
route.path.requirements.empty? && !route.glob?
end
|
Instance Method Details
#call(t, args, inner_options, url_strategy) ⇒ Object
261
262
263
264
265
266
267
268
269
270
271
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 261
def call(t, args, inner_options, url_strategy)
controller_options = t.url_options
options = controller_options.merge @options
hash = handle_positional_args(controller_options,
inner_options || {},
args,
options,
@segment_keys)
t._routes.url_for(hash, route_name, url_strategy)
end
|
#handle_positional_args(controller_options, inner_options, args, result, path_params) ⇒ Object
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
|
# File 'actionpack/lib/action_dispatch/routing/route_set.rb', line 273
def handle_positional_args(controller_options, inner_options, args, result, path_params)
if args.size > 0
if path_params.include?(:format)
path_params_size = path_params.size - 1
else
path_params_size = path_params.size
end
if args.size < path_params_size
path_params -= controller_options.keys
path_params -= result.keys
else
path_params = path_params.dup
end
inner_options.each_key do |key|
path_params.delete(key)
end
args.each_with_index do |arg, index|
param = path_params[index]
result[param] = arg if param
end
end
result.merge!(inner_options)
end
|