aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-03-27 00:01:56 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-03-27 00:01:56 +0000
commitd3e1e0305645b9de904399144b18b5d2bdf86e32 (patch)
tree323748cdf2a293a250df714c5128c72dd4bb3810
parent8ff6d76c6a54650c0bfb1809cb3e870ebb4c2de6 (diff)
downloadrails-d3e1e0305645b9de904399144b18b5d2bdf86e32.tar.gz
rails-d3e1e0305645b9de904399144b18b5d2bdf86e32.tar.bz2
rails-d3e1e0305645b9de904399144b18b5d2bdf86e32.zip
Added :owerwrite_params back to url_for and friends -- it was AWL since the introduction of Routes #921 [raphinou]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1016 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--actionpack/CHANGELOG2
-rw-r--r--actionpack/lib/action_controller/url_rewriter.rb9
2 files changed, 10 insertions, 1 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 5519505526..c5f42e51be 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Added :owerwrite_params back to url_for and friends -- it was AWL since the introduction of Routes #921 [raphinou]
+
* Added :position option to link_to_remote/form_remote_tag that can be either :before, :top, :bottom, or :after and specifies where the return from the method should be inserted #952 [Matthew McCray/Sam Stephenson]
* Added Effect.Highlight to prototype.js to do Yellow Fade Technique (of 37signals' fame) on any container #952 [Sam Stephenson/?]
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)