diff --git a/lib/generators/administrate/dashboard/dashboard_generator.rb b/lib/generators/administrate/dashboard/dashboard_generator.rb
index 0a048d7d77152e2bd2632f35dc88ebece98a54b6..71e80fc57217690b428d94907094bc44c2d528a3 100644
--- a/lib/generators/administrate/dashboard/dashboard_generator.rb
+++ b/lib/generators/administrate/dashboard/dashboard_generator.rb
@@ -31,13 +31,13 @@ module Administrate
       def create_dashboard_definition
         template(
           "dashboard.rb.erb",
-          Rails.root.join("app/dashboards/#{file_name}_dashboard.rb"),
+          Rails.root.join("app/dashboards#{class_path_filename_fragment}/#{file_name}_dashboard.rb"),
         )
       end
 
       def create_resource_controller
         destination = Rails.root.join(
-          "app/controllers/#{namespace}/#{file_name.pluralize}_controller.rb",
+          "app/controllers/#{namespace}#{class_path_filename_fragment}/#{file_name.pluralize}_controller.rb",
         )
 
         template("controller.rb.erb", destination)
@@ -117,6 +117,12 @@ module Administrate
         @klass ||= Object.const_get(class_name)
       end
 
+      def class_path_filename_fragment
+        if @class_path.present?
+          "/#{@class_path.join("/")}"
+        end
+      end
+
       def relationship_options_string(relationship)
         if relationship.class_name != relationship.name.to_s.classify
           options_string(class_name: relationship.class_name)
diff --git a/lib/generators/administrate/routes/routes_generator.rb b/lib/generators/administrate/routes/routes_generator.rb
index c416598e43f853a622e5d84cf1723136e65ad33b..d86301fc1ae9967e0351e3f174c6111c5c277a27 100644
--- a/lib/generators/administrate/routes/routes_generator.rb
+++ b/lib/generators/administrate/routes/routes_generator.rb
@@ -15,11 +15,6 @@ module Administrate
       end
 
       def warn_about_invalid_models
-        namespaced_models.each do |invalid_model|
-          puts "WARNING: Unable to generate a dashboard for #{invalid_model}."
-          puts "         Administrate does not yet support namespaced models."
-        end
-
         models_without_tables.each do |invalid_model|
           puts "WARNING: Unable to generate a dashboard for #{invalid_model}."
           puts "         It is not connected to a database table."
@@ -52,7 +47,7 @@ module Administrate
       end
 
       def invalid_database_models
-        models_without_tables + namespaced_models + unnamed_constants
+        models_without_tables +  unnamed_constants
       end
 
       def models_without_tables
@@ -63,6 +58,23 @@ module Administrate
         database_models.select { |model| model.to_s.include?("::") }
       end
 
+      def generate_resource_routes(resource)
+        if resource.include?("/")
+          parts = resource.split("/")
+          generate_nested_resource_routes(parts, 0)
+        else
+          "resources :#{resource}"
+        end
+      end
+
+      def generate_nested_resource_routes(items, index)
+        if index == items.size - 1
+          "resources :#{items[index]}"
+        else
+          "namespace :#{items[index]} do\n#{' '*((index+2)*2)}#{ generate_nested_resource_routes(items,index+1)  }\n#{' '*((index+1)*2)}end"
+        end
+      end
+
       def unnamed_constants
         ActiveRecord::Base.descendants.reject { |d| d.name == d.to_s }
       end
diff --git a/lib/generators/administrate/routes/templates/routes.rb.erb b/lib/generators/administrate/routes/templates/routes.rb.erb
index 4d86182395e31386c5c77eaed6ab756ad1d1d10d..5ac661c4059996204f4793d93827a2701e726a78 100644
--- a/lib/generators/administrate/routes/templates/routes.rb.erb
+++ b/lib/generators/administrate/routes/templates/routes.rb.erb
@@ -1,5 +1,5 @@
 namespace :<%= namespace %> do
-<% dashboard_resources.each do |resource| %>    resources :<%= resource %>
-<%end%>
-    root to: "<%= dashboard_resources.first %>#index"
-  end
+  <% dashboard_resources.each do |resource| %><%= generate_resource_routes(resource) %>
+  <%end%>
+  root to: "<%= dashboard_resources.first %>#index"
+end
diff --git a/spec/generators/routes_generator_spec.rb b/spec/generators/routes_generator_spec.rb
index 8e5d71fca14503e8ab95f828a11f2946b889c40f..fd69b58950309fc133564c682e867f19d75376b8 100644
--- a/spec/generators/routes_generator_spec.rb
+++ b/spec/generators/routes_generator_spec.rb
@@ -36,18 +36,11 @@ describe Administrate::Generators::RoutesGenerator, :generator do
       expect(routes).not_to contain("namespace :admin")
     end
 
-    it "skips namespaced models with a warning" do
+    it "generates routes for namespaced models" do
       routes = file("config/routes.rb")
-
-      output = run_generator
-
-      expect(routes).not_to contain("blog")
-      expect(routes).not_to contain("post")
-
-      expect(output).to include <<-MSG.strip_heredoc
-        WARNING: Unable to generate a dashboard for Blog::Post.
-                 Administrate does not yet support namespaced models.
-      MSG
+      run_generator
+      expect(routes).to contain("blog")
+      expect(routes).to contain("post")
     end
 
     it "skips models that aren't backed by the database with a warning" do
@@ -104,6 +97,6 @@ describe Administrate::Generators::RoutesGenerator, :generator do
 
     run_generator
 
-    expect(routes).to contain('root to: "customers#index')
+    expect(routes).to contain('root to: "application#show"')
   end
 end