Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

url_for: avoid a nil check. unroll a loop. handle most common case 1st.

  • Loading branch information...
commit 99c08c702eea705471e07bc83a9bdea7edadfb7b 1 parent 697991a
@ahoward ahoward authored
Showing with 13 additions and 18 deletions.
  1. +13 −18 actionpack/lib/action_dispatch/routing/url_for.rb
View
31 actionpack/lib/action_dispatch/routing/url_for.rb
@@ -144,10 +144,21 @@ def url_options
# # => 'http://somehost.org/tasks/testing?number=33'
def url_for(options = nil)
case options
+ when nil
+ _routes.url_for(url_options)
+ when Hash
+ symbolized = {}
+ options.keys.each do |k|
+ sym = k.to_sym
+ symbolized[sym] = options[k] unless symbolized.has_key?(sym)
+ end
+ url_options.keys.each do |k|
+ sym = k.to_sym
+ symbolized[sym] = url_options[k] unless symbolized.has_key?(sym)
+ end
+ _routes.url_for(symbolized)
when String
options
- when nil, Hash
- _routes.url_for(_merge_url_for_options(options, url_options))
else
polymorphic_url(options)
end
@@ -155,22 +166,6 @@ def url_for(options = nil)
protected
- def _merge_url_for_options(h1, h2)
- opts = {}
-
- h1.keys.each do |k|
- s = k.to_sym
- opts[s] = h1[k] unless opts.has_key?(s)
- end if h1
-
- h2.keys.each do |k|
- s = k.to_sym
- opts[s] = h2[k] unless opts.has_key?(s)
- end if h2
-
- opts
- end
-
def optimize_routes_generation?
return @_optimized_routes if defined?(@_optimized_routes)
@_optimized_routes = _routes.optimize_routes_generation? && default_url_options.empty?

1 comment on commit 99c08c7

@korny

Very nice!

Please sign in to comment.
Something went wrong with that request. Please try again.