diff options
Diffstat (limited to 'actionpack/lib')
-rw-r--r-- | actionpack/lib/action_controller/url_rewriter.rb | 9 |
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) |