diff options
author | Prathamesh Sonpatki <csonpatki@gmail.com> | 2013-07-21 20:36:35 +0530 |
---|---|---|
committer | Prathamesh Sonpatki <csonpatki@gmail.com> | 2013-08-14 08:53:38 +0530 |
commit | 53c5794a4bb7a1bc8b3cbe9bae86c35de06c5088 (patch) | |
tree | b7663dc0ca824ca3115b8156c9caef7a4bda2c57 /railties/lib/rails/generators | |
parent | 4934f19a7812b08a369c775c724410057daeb151 (diff) | |
download | rails-53c5794a4bb7a1bc8b3cbe9bae86c35de06c5088.tar.gz rails-53c5794a4bb7a1bc8b3cbe9bae86c35de06c5088.tar.bz2 rails-53c5794a4bb7a1bc8b3cbe9bae86c35de06c5088.zip |
Generate namespaced routes correctly for generators. Fix for #11532
Diffstat (limited to 'railties/lib/rails/generators')
-rw-r--r-- | railties/lib/rails/generators/rails/controller/controller_generator.rb | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/railties/lib/rails/generators/rails/controller/controller_generator.rb b/railties/lib/rails/generators/rails/controller/controller_generator.rb index bae54623c6..822f35fb42 100644 --- a/railties/lib/rails/generators/rails/controller/controller_generator.rb +++ b/railties/lib/rails/generators/rails/controller/controller_generator.rb @@ -10,11 +10,45 @@ module Rails def add_routes actions.reverse.each do |action| - route %{get "#{file_name}/#{action}"} + route generate_routing_code(action) end end hook_for :template_engine, :test_framework, :helper, :assets + + private + + # This method creates nested route entry for namespaced resources. + # For eg. rails g controller foo/bar/baz index + # Will generate - + # namespace :foo do + # namespace :bar do + # get "baz/index" + # end + # end + def generate_routing_code(action) + depth = class_path.length + # Create 'namespace' ladder + # namespace :foo do + # namespace :bar do + namespace_ladder = class_path.each_with_index.map do |ns, i| + %{#{" " * i * 2}namespace :#{ns} do\n } + end.join + + # Create route + # get "baz/index" + route = %{#{" " * depth * 2}get "#{file_name}/#{action}"\n} + + # Create `end` ladder + # end + # end + end_ladder = (1..depth).reverse_each.map do |i| + "#{" " * i * 2}end\n" + end.join + + # Combine the 3 parts to generate complete route entry + namespace_ladder + route + end_ladder + end end end end |