diff options
author | Yves Senn <yves.senn@gmail.com> | 2013-08-14 02:14:54 -0700 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2013-08-14 02:14:54 -0700 |
commit | 271d622a4ddc35c21bc8b853e4e2901a9ede43bd (patch) | |
tree | 06ae1f9b9f2883d8984fd073f8a26b20c8aa2790 /railties/lib/rails | |
parent | 77ba336080b4de15233f669bdeea5c9ac44a3941 (diff) | |
parent | 53c5794a4bb7a1bc8b3cbe9bae86c35de06c5088 (diff) | |
download | rails-271d622a4ddc35c21bc8b853e4e2901a9ede43bd.tar.gz rails-271d622a4ddc35c21bc8b853e4e2901a9ede43bd.tar.bz2 rails-271d622a4ddc35c21bc8b853e4e2901a9ede43bd.zip |
Merge pull request #11544 from prathamesh-sonpatki/namespaced_routes_test
Generate namespaced routes correctly for generators. Fix for #11532
Diffstat (limited to 'railties/lib/rails')
-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 |