Class: ActionDispatch::Routing::RouteSet::NamedRouteCollection::UrlHelper
- Inherits:
-
Object
- Object
- ActionDispatch::Routing::RouteSet::NamedRouteCollection::UrlHelper
- Defined in:
- lib/action_dispatch/routing/route_set.rb
Direct Known Subclasses
Defined Under Namespace
Classes: OptimizedUrlHelper
Instance Attribute Summary collapse
-
#route_name ⇒ Object
readonly
Returns the value of attribute route_name.
Class Method Summary collapse
Instance Method Summary collapse
- #call(t, method_name, args, inner_options, url_strategy) ⇒ Object
- #handle_positional_args(controller_options, inner_options, args, result, path_params) ⇒ Object
-
#initialize(route, options, route_name) ⇒ UrlHelper
constructor
A new instance of UrlHelper.
Constructor Details
#initialize(route, options, route_name) ⇒ UrlHelper
Returns a new instance of UrlHelper.
273 274 275 276 277 278 |
# File 'lib/action_dispatch/routing/route_set.rb', line 273 def initialize(route, , route_name) @options = @segment_keys = route.segment_keys.uniq @route = route @route_name = route_name end |
Instance Attribute Details
#route_name ⇒ Object (readonly)
Returns the value of attribute route_name.
203 204 205 |
# File 'lib/action_dispatch/routing/route_set.rb', line 203 def route_name @route_name end |
Class Method Details
.create(route, options, route_name) ⇒ Object
191 192 193 194 195 196 197 |
# File 'lib/action_dispatch/routing/route_set.rb', line 191 def self.create(route, , route_name) if optimize_helper?(route) OptimizedUrlHelper.new(route, , route_name) else new(route, , route_name) end end |
.optimize_helper?(route) ⇒ Boolean
199 200 201 |
# File 'lib/action_dispatch/routing/route_set.rb', line 199 def self.optimize_helper?(route) route.path.requirements.empty? && !route.glob? end |
Instance Method Details
#call(t, method_name, args, inner_options, url_strategy) ⇒ Object
280 281 282 283 284 285 286 287 288 289 290 |
# File 'lib/action_dispatch/routing/route_set.rb', line 280 def call(t, method_name, args, , url_strategy) = t. = .merge @options hash = handle_positional_args(, || {}, args, , @segment_keys) t._routes.url_for(hash, route_name, url_strategy, method_name) end |
#handle_positional_args(controller_options, inner_options, args, result, path_params) ⇒ Object
292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 |
# File 'lib/action_dispatch/routing/route_set.rb', line 292 def handle_positional_args(, , args, result, path_params) if args.size > 0 # take format into account 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 -= .keys path_params -= (result[:path_params] || {}).merge(result).keys else path_params = path_params.dup end .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!() end |