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.
-
#url_strategy ⇒ Object
readonly
Returns the value of attribute url_strategy.
Class Method Summary collapse
Instance Method Summary collapse
- #call(t, args, inner_options) ⇒ Object
- #handle_positional_args(controller_options, inner_options, args, result, path_params) ⇒ Object
-
#initialize(route, options, route_name, url_strategy) ⇒ UrlHelper
constructor
A new instance of UrlHelper.
Constructor Details
#initialize(route, options, route_name, url_strategy) ⇒ UrlHelper
Returns a new instance of UrlHelper.
252 253 254 255 256 257 258 |
# File 'lib/action_dispatch/routing/route_set.rb', line 252 def initialize(route, , route_name, url_strategy) @options = @segment_keys = route.segment_keys.uniq @route = route @url_strategy = url_strategy @route_name = route_name end |
Instance Attribute Details
#route_name ⇒ Object (readonly)
Returns the value of attribute route_name.
184 185 186 |
# File 'lib/action_dispatch/routing/route_set.rb', line 184 def route_name @route_name end |
#url_strategy ⇒ Object (readonly)
Returns the value of attribute url_strategy.
184 185 186 |
# File 'lib/action_dispatch/routing/route_set.rb', line 184 def url_strategy @url_strategy end |
Class Method Details
.create(route, options, route_name, url_strategy) ⇒ Object
172 173 174 175 176 177 178 |
# File 'lib/action_dispatch/routing/route_set.rb', line 172 def self.create(route, , route_name, url_strategy) if optimize_helper?(route) OptimizedUrlHelper.new(route, , route_name, url_strategy) else new route, , route_name, url_strategy end end |
.optimize_helper?(route) ⇒ Boolean
180 181 182 |
# File 'lib/action_dispatch/routing/route_set.rb', line 180 def self.optimize_helper?(route) !route.glob? && route.path.requirements.empty? end |
Instance Method Details
#call(t, args, inner_options) ⇒ Object
260 261 262 263 264 265 266 267 268 269 270 |
# File 'lib/action_dispatch/routing/route_set.rb', line 260 def call(t, args, ) = t. = .merge @options hash = handle_positional_args(, || {}, args, , @segment_keys) t._routes.url_for(hash, route_name, url_strategy) end |
#handle_positional_args(controller_options, inner_options, args, result, path_params) ⇒ Object
272 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 |
# File 'lib/action_dispatch/routing/route_set.rb', line 272 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.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 |