From 9e76b59c85d94148e20999a2943777cb1fe0bee9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 25 Nov 2007 22:24:23 +0000 Subject: Fixed that named routes living under resources shouldn't have double slashes (closes #10198) [isaacfeliu] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8206 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_controller/routing.rb | 2 +- actionpack/test/controller/routing_test.rb | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index e197e334aa..ec19b42a5e 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed that named routes living under resources shouldn't have double slashes #10198 [isaacfeliu] + * Make sure that cookie sessions use a secret that is at least 30 chars in length. [Koz] * Fixed that partial rendering should look at the type of the first render to determine its own type if no other clues are available (like when using text.plain.erb as the extension in AM) #10130 [java] diff --git a/actionpack/lib/action_controller/routing.rb b/actionpack/lib/action_controller/routing.rb index 2e8951e36d..1b7eb74db1 100644 --- a/actionpack/lib/action_controller/routing.rb +++ b/actionpack/lib/action_controller/routing.rb @@ -1012,7 +1012,7 @@ module ActionController path = "/#{path}" unless path[0] == ?/ path = "#{path}/" unless path[-1] == ?/ - path = "/#{options[:path_prefix]}#{path}" if options[:path_prefix] + path = "/#{options[:path_prefix].gsub(/^\//,'')}#{path}" if options[:path_prefix] segments = segments_for_route_path(path) defaults, requirements, conditions = divide_route_options(segments, options) diff --git a/actionpack/test/controller/routing_test.rb b/actionpack/test/controller/routing_test.rb index 5198efd8e6..1036d7f3bf 100644 --- a/actionpack/test/controller/routing_test.rb +++ b/actionpack/test/controller/routing_test.rb @@ -1980,6 +1980,20 @@ class RouteSetTest < Test::Unit::TestCase assert_equal '/post/show/10', all.last end + def test_named_route_in_nested_resource + set.draw do |map| + map.resources :projects do |project| + project.comments 'comments', :controller => 'comments', :action => 'index' + end + end + + request.path = "/projects/1/comments" + request.method = :get + assert_nothing_raised { set.recognize(request) } + assert_equal("comments", request.path_parameters[:controller]) + assert_equal("index", request.path_parameters[:action]) + end + end class RoutingTest < Test::Unit::TestCase -- cgit v1.2.3