mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #2497 from akaspick/url_for_fix
When calling url_for with a hash, additional (likely unwanted) values (such as :host) would be returned in the hash
This commit is contained in:
commit
d1f1b04386
2 changed files with 13 additions and 1 deletions
|
@ -140,7 +140,7 @@ module ActionDispatch
|
||||||
when String
|
when String
|
||||||
options
|
options
|
||||||
when nil, Hash
|
when nil, Hash
|
||||||
_routes.url_for((options || {}).reverse_merge!(url_options).symbolize_keys)
|
_routes.url_for((options.dup || {}).reverse_merge!(url_options).symbolize_keys)
|
||||||
else
|
else
|
||||||
polymorphic_url(options)
|
polymorphic_url(options)
|
||||||
end
|
end
|
||||||
|
|
|
@ -851,6 +851,18 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# tests the use of dup in url_for
|
||||||
|
def test_url_for_with_no_side_effects
|
||||||
|
# without dup, additional (and possibly unwanted) values will be present in the options (eg. :host)
|
||||||
|
original_options = {:controller => 'projects', :action => 'status'}
|
||||||
|
options = original_options.dup
|
||||||
|
|
||||||
|
url_for options
|
||||||
|
|
||||||
|
# verify that the options passed in have not changed from the original ones
|
||||||
|
assert_equal original_options, options
|
||||||
|
end
|
||||||
|
|
||||||
def test_projects_status
|
def test_projects_status
|
||||||
with_test_routes do
|
with_test_routes do
|
||||||
assert_equal '/projects/status', url_for(:controller => 'projects', :action => 'status', :only_path => true)
|
assert_equal '/projects/status', url_for(:controller => 'projects', :action => 'status', :only_path => true)
|
||||||
|
|
Loading…
Reference in a new issue