From ee240c2d8425f7c84f765fbe7d100dccb279b2d3 Mon Sep 17 00:00:00 2001 From: Jorge Bernal Date: Fri, 30 May 2008 19:51:09 +0200 Subject: [PATCH] Make scaffold generator work nicely with nested controllers --- .../components/scaffold/scaffold_generator.rb | 10 +++++++--- .../scaffold/templates/view_new.html.erb | 2 +- .../generators/rails_scaffold_generator_test.rb | 6 ++++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb b/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb index e2902bf..0da2bb4 100644 --- a/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +++ b/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb @@ -9,7 +9,8 @@ class ScaffoldGenerator < Rails::Generator::NamedBase :controller_class_name, :controller_underscore_name, :controller_singular_name, - :controller_plural_name + :controller_plural_name, + :controller_resource_name alias_method :controller_file_name, :controller_underscore_name alias_method :controller_table_name, :controller_plural_name @@ -23,8 +24,10 @@ class ScaffoldGenerator < Rails::Generator::NamedBase @controller_singular_name=base_name.singularize if @controller_class_nesting.empty? @controller_class_name = @controller_class_name_without_nesting + @controller_resource_name = @controller_underscore_name else @controller_class_name = "#{@controller_class_nesting}::#{@controller_class_name_without_nesting}" + @controller_resource_name = "#{@controller_class_path.join('_')}_#{@controller_underscore_name}" end end @@ -47,7 +50,8 @@ class ScaffoldGenerator < Rails::Generator::NamedBase for action in scaffold_views m.template( "view_#{action}.html.erb", - File.join('app/views', controller_class_path, controller_file_name, "#{action}.html.erb") + File.join('app/views', controller_class_path, controller_file_name, "#{action}.html.erb"), + :assigns => {"resource_name" => controller_resource_name} ) end @@ -62,7 +66,7 @@ class ScaffoldGenerator < Rails::Generator::NamedBase m.template('functional_test.rb', File.join('test/functional', controller_class_path, "#{controller_file_name}_controller_test.rb")) m.template('helper.rb', File.join('app/helpers', controller_class_path, "#{controller_file_name}_helper.rb")) - m.route_resources controller_file_name + m.route_resources controller_resource_name m.dependency 'model', [name] + @args, :collision => :skip end diff --git a/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb b/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb index c47e811..4d2a85b 100644 --- a/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb +++ b/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb @@ -14,4 +14,4 @@

<%% end %> -<%%= link_to 'Back', <%= plural_name %>_path %> +<%%= link_to 'Back', <%= resource_name %>_path %> diff --git a/railties/test/generators/rails_scaffold_generator_test.rb b/railties/test/generators/rails_scaffold_generator_test.rb index 220f9e3..b45e6f4 100644 --- a/railties/test/generators/rails_scaffold_generator_test.rb +++ b/railties/test/generators/rails_scaffold_generator_test.rb @@ -104,4 +104,10 @@ class RailsScaffoldGeneratorTest < GeneratorTestCase assert_added_route_for :products end + # Test for #283: scaffold doesn't work correctly with modules + def test_scaffold_resources_name + run_generator('scaffold', %w(Product/Ratings name:string)) + assert_added_route_for :product_ratings + end + end -- 1.5.5.1