aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorNicholas Seckar <nseckar@gmail.com>2005-09-06 22:06:11 +0000
committerNicholas Seckar <nseckar@gmail.com>2005-09-06 22:06:11 +0000
commit3108764367023aabaee04d1dbcbed8eb76e61184 (patch)
tree544696039d567618de9b58d266e5225c20004dff /actionpack
parentf2a89d7862313505562186620a07d498190971c3 (diff)
downloadrails-3108764367023aabaee04d1dbcbed8eb76e61184.tar.gz
rails-3108764367023aabaee04d1dbcbed8eb76e61184.tar.bz2
rails-3108764367023aabaee04d1dbcbed8eb76e61184.zip
Fix overwrite params. Closes #1909
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2144 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/CHANGELOG2
-rw-r--r--actionpack/lib/action_controller/url_rewriter.rb4
-rw-r--r--actionpack/test/controller/url_rewriter_tests.rb10
3 files changed, 16 insertions, 0 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 636479c3e5..ae4da0c2f3 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Fixed overwrite_params
+
* Added ActionController::Base.benchmark and ActionController::Base.silence to allow for easy benchmarking and turning off the log
* Updated vendor copy of html-scanner to support better xml parsing
diff --git a/actionpack/lib/action_controller/url_rewriter.rb b/actionpack/lib/action_controller/url_rewriter.rb
index 7d66cf1ced..acad0b7b8c 100644
--- a/actionpack/lib/action_controller/url_rewriter.rb
+++ b/actionpack/lib/action_controller/url_rewriter.rb
@@ -36,6 +36,10 @@ module ActionController
def rewrite_path(options)
options = options.symbolize_keys
options.update(options[:params].symbolize_keys) if options[:params]
+ if (overwrite = options.delete(:overwrite_params))
+ options.update(@parameters)
+ options.update(overwrite)
+ end
RESERVED_OPTIONS.each {|k| options.delete k}
path, extra_keys = Routing::Routes.generate(options.dup, @request) # Warning: Routes will mutate and violate the options hash
diff --git a/actionpack/test/controller/url_rewriter_tests.rb b/actionpack/test/controller/url_rewriter_tests.rb
index 392024f03d..af26c2dcf5 100644
--- a/actionpack/test/controller/url_rewriter_tests.rb
+++ b/actionpack/test/controller/url_rewriter_tests.rb
@@ -23,5 +23,15 @@ class UrlRewriterTests < Test::Unit::TestCase
def test_escape_spaces_build_query_string_selected_keys
assert_equal '?x=hello+world', @rewriter.send(:build_query_string, {:x => 'hello world', :y => 'goodbye world'}, [:x])
end
+
+ def test_overwrite_params
+ @params[:controller] = 'hi'
+ @params[:action] = 'bye'
+ @params[:id] = '2'
+
+ assert_equal '/hi/hi/2', @rewriter.rewrite(:only_path => true, :overwrite_params => {:action => 'hi'})
+ u = @rewriter.rewrite(:only_path => false, :overwrite_params => {:action => 'hi'})
+ assert_match %r(/hi/hi/2$), u
+ end
end