aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/lib/action_controller/resources.rb6
-rw-r--r--actionpack/test/controller/resources_test.rb18
2 files changed, 23 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/resources.rb b/actionpack/lib/action_controller/resources.rb
index a8373677fd..df0c64d91c 100644
--- a/actionpack/lib/action_controller/resources.rb
+++ b/actionpack/lib/action_controller/resources.rb
@@ -351,7 +351,11 @@ module ActionController
# It'll also create admin_product_tags_url pointing to "admin/products/#{product_id}/tags", which will look for
# Admin::TagsController.
def namespace(name, options = {}, &block)
- with_options({ :path_prefix => name, :name_prefix => "#{name}_", :namespace => "#{name}/" }.merge(options), &block)
+ if options[:namespace]
+ with_options({:path_prefix => "#{options.delete(:path_prefix)}/#{name}", :name_prefix => "#{options.delete(:name_prefix)}#{name}_", :namespace => "#{options.delete(:namespace)}#{name}/" }.merge(options), &block)
+ else
+ with_options({ :path_prefix => name.to_s, :name_prefix => "#{name}_", :namespace => "#{name}/" }.merge(options), &block)
+ end
end
diff --git a/actionpack/test/controller/resources_test.rb b/actionpack/test/controller/resources_test.rb
index 45e4003021..1f61377ad9 100644
--- a/actionpack/test/controller/resources_test.rb
+++ b/actionpack/test/controller/resources_test.rb
@@ -17,6 +17,10 @@ class AdminController < ResourcesController; end
module Backoffice
class ProductsController < ResourcesController; end
+
+ module Admin
+ class ProductsController < ResourcesController; end
+ end
end
class ResourcesTest < Test::Unit::TestCase
@@ -400,6 +404,20 @@ class ResourcesTest < Test::Unit::TestCase
end
end
+ def test_resources_in_nested_namespace
+ with_routing do |set|
+ set.draw do |map|
+ map.namespace :backoffice do |backoffice|
+ backoffice.namespace :admin do |admin|
+ admin.resources :products
+ end
+ end
+ end
+
+ assert_simply_restful_for :products, :controller => "backoffice/admin/products", :name_prefix => 'backoffice_admin_', :path_prefix => 'backoffice/admin/'
+ end
+ end
+
def test_resources_using_namespace
with_routing do |set|
set.draw do |map|