aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan De Poorter <jan@defv.be>2010-02-12 11:39:19 +0100
committerJeremy Kemper <jeremy@bitsweat.net>2010-03-07 14:36:26 -0800
commitdfc7ff64298e1a0656639a630cc0ddbf93c1eeb9 (patch)
treeda8cdf63e2e9378be320d0711d327221a929d8aa
parentaa758b93889ea879f084948c71dcd47c0275fb30 (diff)
downloadrails-dfc7ff64298e1a0656639a630cc0ddbf93c1eeb9.tar.gz
rails-dfc7ff64298e1a0656639a630cc0ddbf93c1eeb9.tar.bz2
rails-dfc7ff64298e1a0656639a630cc0ddbf93c1eeb9.zip
Make sure nested singular resources get the correct name
[#3911 state:committed] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
-rw-r--r--actionpack/lib/action_dispatch/routing/mapper.rb5
-rw-r--r--actionpack/test/dispatch/routing_test.rb10
2 files changed, 14 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index 52a8df4273..7a33259054 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -452,7 +452,10 @@ module ActionDispatch
scope(:path => resource.name.to_s, :controller => resource.controller) do
with_scope_level(:resource, resource) do
- yield if block_given?
+
+ scope(:name_prefix => resource.name.to_s) do
+ yield if block_given?
+ end
get :show if resource.actions.include?(:show)
post :create if resource.actions.include?(:create)
diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb
index 37c2f1421b..b46276c453 100644
--- a/actionpack/test/dispatch/routing_test.rb
+++ b/actionpack/test/dispatch/routing_test.rb
@@ -24,6 +24,8 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
resource :session do
get :create
+
+ resource :info
end
match 'account/logout' => redirect("/logout"), :as => :logout_redirect
@@ -234,6 +236,14 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
end
+ def test_session_info_nested_singleton_resource
+ with_test_routes do
+ get '/session/info'
+ assert_equal 'infos#show', @response.body
+ assert_equal '/session/info', session_info_path
+ end
+ end
+
def test_redirect_modulo
with_test_routes do
get '/account/modulo/name'