Permalink
Browse files

Make sure changing the controller from foo/bar to bing/bang does not …

…change relative to foo.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4438 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent f97978a commit 6c04eb2115cd65d480f1d7c95cbc86a5d39a41ca @jamis jamis committed Jun 5, 2006
@@ -1,5 +1,7 @@
*SVN*
+* Make sure changing the controller from foo/bar to bing/bang does not change relative to foo. [Jamis Buck]
+
* Escape the path before routing recognition. #3671
* Make sure :id and friends are unescaped properly. #5275 [me@julik.nl]
@@ -955,7 +955,9 @@ def generate(options, recall = {}, method=:generate)
# on admin/get, and the new controller is 'set', the new controller
# should really be admin/set.
if expire_on[:controller] && options[:controller] && options[:controller][0] != ?/
- parts = recall[:controller].split('/')[0..-2] + [options[:controller]]
+ old_parts = recall[:controller].split('/')
+ new_parts = options[:controller].split('/')
+ parts = old_parts[0..-(new_parts.length + 1)] + new_parts
options[:controller] = parts.join('/')
end
@@ -1330,6 +1330,13 @@ def test_generate_finds_best_fit
url = set.generate(:controller => "people", :action => "index", :ws => true)
assert_equal "/ws/people", url
end
+
+ def test_generate_changes_controller_module
+ set.draw { |map| map.connect ':controller/:action/:id' }
+ current = { :controller => "bling/bloop", :action => "bap", :id => 9 }
+ url = set.generate({:controller => "foo/bar", :action => "baz", :id => 7}, current)
+ assert_equal "/foo/bar/baz/7", url
+ end
end
class RoutingTest < Test::Unit::TestCase

0 comments on commit 6c04eb2

Please sign in to comment.