diff options
-rw-r--r-- | actionpack/lib/action_controller/resources.rb | 6 | ||||
-rw-r--r-- | actionpack/test/controller/resources_test.rb | 18 |
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| |