aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/url_rewriter.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_controller/url_rewriter.rb')
-rw-r--r--actionpack/lib/action_controller/url_rewriter.rb9
1 files changed, 8 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/url_rewriter.rb b/actionpack/lib/action_controller/url_rewriter.rb
index 6474c72306..6d7c99eff0 100644
--- a/actionpack/lib/action_controller/url_rewriter.rb
+++ b/actionpack/lib/action_controller/url_rewriter.rb
@@ -35,8 +35,15 @@ module ActionController
options = options.symbolize_keys
options.update((options[:params] || {}).symbolize_keys)
RESERVED_OPTIONS.each {|k| options.delete k}
-
path, extras = Routing::Routes.generate(options, @request)
+
+ if extras[:overwrite_params]
+ params_copy = @request.parameters.delete_if { |k,v| ["controller","action"].include? k }
+ params_copy.update extras[:overwrite_params]
+ extras.delete(:overwrite_params)
+ extras.update(params_copy)
+ end
+
path = "/#{path.join('/')}".chomp '/'
path = '/' if path.empty?
path += build_query_string(extras)