From 3e7a4ecc57da31c908982f933de65d33ebbfc344 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 2 Jan 2005 20:10:11 +0000 Subject: Fixed redirects when the controller and action is named the same. Still haven't fixed same controller, module, and action, though #201 [Josh] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@321 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_controller/url_rewriter.rb | 2 +- actionpack/test/controller/url_test.rb | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) (limited to 'actionpack') diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 90db91610f..ec269757ae 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed redirects when the controller and action is named the same. Still haven't fixed same controller, module, and action, though #201 [Josh] + * Fixed problems with running multiple functional tests in Rails under 1.8.2 by including hack for test/unit weirdness * Added thread-safety to the DRbStore #66, #389 [Ben Stiglitz] diff --git a/actionpack/lib/action_controller/url_rewriter.rb b/actionpack/lib/action_controller/url_rewriter.rb index a3ff8fac32..cb6baf2c13 100644 --- a/actionpack/lib/action_controller/url_rewriter.rb +++ b/actionpack/lib/action_controller/url_rewriter.rb @@ -91,7 +91,7 @@ module ActionController path = path.sub(%r(#{@controller}/?), @controller + "/" + action_name(options)) # " ruby-mode end else - path = path.sub((action_prefix || "") + @action + (action_suffix || ""), action_name(options, action_prefix)) + path = path.sub(@controller + "/" + (action_prefix || "") + @action + (action_suffix || ""), @controller + "/" + action_name(options, action_prefix)) end if options[:controller_prefix] && !options[:controller] diff --git a/actionpack/test/controller/url_test.rb b/actionpack/test/controller/url_test.rb index 5cae4e289b..21575f513a 100644 --- a/actionpack/test/controller/url_test.rb +++ b/actionpack/test/controller/url_test.rb @@ -51,6 +51,14 @@ class UrlTest < Test::Unit::TestCase "http://", "www.singlefile.com", 80, "/identity/show/5", { "id" => "5" } ), "identity", "show") + @clean_url_with_same_action_and_controller_name = ActionController::UrlRewriter.new(MockRequest.new( + "http://", "www.singlefile.com", 80, "/login/login", { } + ), "login", "login") + + @clean_url_with_same_action_and_controller_and_module_name = ActionController::UrlRewriter.new(MockRequest.new( + "http://", "www.singlefile.com", 80, "/login/login/login", { "module" => "login" } + ), "login", "login") + @clean_url_with_id_as_char = ActionController::UrlRewriter.new(MockRequest.new( "http://", "www.singlefile.com", 80, "/teachers/show/t", { "id" => "t" } ), "teachers", "show") @@ -179,6 +187,15 @@ class UrlTest < Test::Unit::TestCase assert_equal "http://www.singlefile.com/library/settings/", @library_url.rewrite(:controller => "settings", :action => "index") end + def test_same_controller_and_action_names + assert_equal "http://www.singlefile.com/login/logout", @clean_url_with_same_action_and_controller_name.rewrite(:action => "logout") + end + + # FIXME + def xtest_same_module_and_controller_and_action_names + assert_equal "http://www.singlefile.com/login/login/logout", @clean_url_with_same_action_and_controller_and_module_name.rewrite(:action => "logout") + end + def test_controller_and_action_with_same_name_as_controller @clean_urls.each do |url| assert_equal "http://www.singlefile.com/anything/identity", url.rewrite(:controller => "anything", :action => "identity") -- cgit v1.2.3