aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorJ Smith <dark.panda@gmail.com>2010-04-21 21:37:51 -0400
committerJosé Valim <jose.valim@gmail.com>2010-04-22 16:47:36 +0200
commit275e839b8dfa3cf2bdedf1b31302dec20ac96a46 (patch)
tree5febc560a25047cb909302c06d1dadf92bf20b00 /actionpack
parent9476daa829f7dd0681121e042dd1356af0d50ca0 (diff)
downloadrails-275e839b8dfa3cf2bdedf1b31302dec20ac96a46.tar.gz
rails-275e839b8dfa3cf2bdedf1b31302dec20ac96a46.tar.bz2
rails-275e839b8dfa3cf2bdedf1b31302dec20ac96a46.zip
Ensure that url_for uses symbolized keys in the controller. [#4391]
Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_dispatch/routing/url_for.rb2
-rw-r--r--actionpack/test/controller/url_for_test.rb10
2 files changed, 11 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/routing/url_for.rb b/actionpack/lib/action_dispatch/routing/url_for.rb
index fb236dce53..394d5a6248 100644
--- a/actionpack/lib/action_dispatch/routing/url_for.rb
+++ b/actionpack/lib/action_dispatch/routing/url_for.rb
@@ -128,7 +128,7 @@ module ActionDispatch
when String
options
when nil, Hash
- _router.url_for(url_options.merge(options || {}))
+ _router.url_for(url_options.merge(options || {}).symbolize_keys)
else
polymorphic_url(options)
end
diff --git a/actionpack/test/controller/url_for_test.rb b/actionpack/test/controller/url_for_test.rb
index fc7773dffe..501f928e05 100644
--- a/actionpack/test/controller/url_for_test.rb
+++ b/actionpack/test/controller/url_for_test.rb
@@ -257,6 +257,16 @@ module AbstractController
assert_equal second_class.default_url_options[:host], second_host
end
+ def test_with_stringified_keys
+ assert_equal("/c/a", W.new.url_for('controller' => 'c', 'action' => 'a', 'only_path' => true))
+ assert_equal("/c", W.new.url_for('controller' => 'c', 'only_path' => true))
+ end
+
+ def test_with_hash_with_indifferent_access
+ assert_equal("/c/a", W.new.url_for(HashWithIndifferentAccess.new('controller' => 'c', 'action' => 'a', 'only_path' => true)))
+ assert_equal("/c", W.new.url_for(HashWithIndifferentAccess.new('controller' => 'c', 'only_path' => true)))
+ end
+
private
def extract_params(url)
url.split('?', 2).last.split('&').sort