aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorara.t.howard <ara.t.howard@gmail.com>2012-04-05 07:30:54 -0600
committerara.t.howard <ara.t.howard@gmail.com>2012-04-05 07:30:54 -0600
commit99c08c702eea705471e07bc83a9bdea7edadfb7b (patch)
tree291fc8211f14322e8a16b326164a6c8efeee877b /actionpack/lib
parent697991a20114ba409e8bc991bfba0a08a25ff60f (diff)
downloadrails-99c08c702eea705471e07bc83a9bdea7edadfb7b.tar.gz
rails-99c08c702eea705471e07bc83a9bdea7edadfb7b.tar.bz2
rails-99c08c702eea705471e07bc83a9bdea7edadfb7b.zip
url_for: avoid a nil check. unroll a loop. handle most common case 1st.
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/action_dispatch/routing/url_for.rb31
1 files changed, 13 insertions, 18 deletions
diff --git a/actionpack/lib/action_dispatch/routing/url_for.rb b/actionpack/lib/action_dispatch/routing/url_for.rb
index f2773615a3..bab501f27c 100644
--- a/actionpack/lib/action_dispatch/routing/url_for.rb
+++ b/actionpack/lib/action_dispatch/routing/url_for.rb
@@ -144,10 +144,21 @@ module ActionDispatch
# # => '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 @@ module ActionDispatch
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?