aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/lib/action_view/routing_url_for.rb
diff options
context:
space:
mode:
authorBernerd Schaefer <bj.schaefer@gmail.com>2015-09-04 12:23:29 -0700
committerBernerd Schaefer <bj.schaefer@gmail.com>2015-09-04 13:42:32 -0700
commitee63532d40c9e06d5b38e9a2e98e00fbbe084064 (patch)
tree102ecaa1c09ef3cdc7bf7941912986160f673e94 /actionview/lib/action_view/routing_url_for.rb
parent451b954c2f072d08e13fc2552f3dfa35d93b0935 (diff)
downloadrails-ee63532d40c9e06d5b38e9a2e98e00fbbe084064.tar.gz
rails-ee63532d40c9e06d5b38e9a2e98e00fbbe084064.tar.bz2
rails-ee63532d40c9e06d5b38e9a2e98e00fbbe084064.zip
`url_for` does not modify polymorphic options
The `url_for` methods in `actionpack` and `actionview` now make a copy of the provided options before generating polymorphic paths or URLs. The bug in the previous behavior is most noticeable in a case like: url_options = [:new, :post, param: 'value'] if current_page?(url_options) css_class = "active" end link_to "New Post", url_options, class: css_class
Diffstat (limited to 'actionview/lib/action_view/routing_url_for.rb')
-rw-r--r--actionview/lib/action_view/routing_url_for.rb5
1 files changed, 3 insertions, 2 deletions
diff --git a/actionview/lib/action_view/routing_url_for.rb b/actionview/lib/action_view/routing_url_for.rb
index 20d6b9a64c..b4cbc80bd5 100644
--- a/actionview/lib/action_view/routing_url_for.rb
+++ b/actionview/lib/action_view/routing_url_for.rb
@@ -105,10 +105,11 @@ module ActionView
when :back
_back_url
when Array
+ components = options.dup
if _generate_paths_by_default
- polymorphic_path(options, options.extract_options!)
+ polymorphic_path(components, components.extract_options!)
else
- polymorphic_url(options, options.extract_options!)
+ polymorphic_url(components, components.extract_options!)
end
else
method = _generate_paths_by_default ? :path : :url