From 293b25e726cf41d58cd4a9764f8dd7030f10efae Mon Sep 17 00:00:00 2001 From: alpaca-tc Date: Mon, 4 Oct 2021 03:47:32 +0900 Subject: [PATCH] Fixed bug that occurred when scaffold generated a model with nested namespace. When I called `rails g scaffold admin/account`, scaffold generated wrong views. Because `render @admin_accounts` expects a partial view of `admin/accounts/_account`, but scaffold generates `admin/accounts/_admin_account`, so the template is not found. --- .../generators/erb/scaffold/scaffold_generator.rb | 2 +- .../erb/scaffold/templates/partial.html.erb.tt | 10 +++++----- railties/test/generators/scaffold_generator_test.rb | 6 ++++++ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/railties/lib/rails/generators/erb/scaffold/scaffold_generator.rb b/railties/lib/rails/generators/erb/scaffold/scaffold_generator.rb index ece5a19577..81f43ab8b6 100644 --- a/railties/lib/rails/generators/erb/scaffold/scaffold_generator.rb +++ b/railties/lib/rails/generators/erb/scaffold/scaffold_generator.rb @@ -22,7 +22,7 @@ module Erb # :nodoc: end end - template "partial.html.erb", File.join("app/views", controller_file_path, "_#{singular_table_name}.html.erb") + template "partial.html.erb", File.join("app/views", controller_file_path, "_#{singular_name}.html.erb") end private diff --git a/railties/lib/rails/generators/erb/scaffold/templates/partial.html.erb.tt b/railties/lib/rails/generators/erb/scaffold/templates/partial.html.erb.tt index 41b9180dfe..7335e2979f 100644 --- a/railties/lib/rails/generators/erb/scaffold/templates/partial.html.erb.tt +++ b/railties/lib/rails/generators/erb/scaffold/templates/partial.html.erb.tt @@ -1,20 +1,20 @@ -
+
<% attributes.reject(&:password_digest?).each do |attribute| -%>

<%= attribute.human_name %>: <% if attribute.attachment? -%> - <%%= link_to <%= singular_table_name %>.<%= attribute.column_name %>.filename, <%= singular_table_name %>.<%= attribute.column_name %> if <%= singular_table_name %>.<%= attribute.column_name %>.attached? %> + <%%= link_to <%= singular_name %>.<%= attribute.column_name %>.filename, <%= singular_name %>.<%= attribute.column_name %> if <%= singular_name %>.<%= attribute.column_name %>.attached? %> <% elsif attribute.attachments? -%> - <%% <%= singular_table_name %>.<%= attribute.column_name %>.each do |<%= attribute.singular_name %>| %> + <%% <%= singular_name %>.<%= attribute.column_name %>.each do |<%= attribute.singular_name %>| %>

<%%= link_to <%= attribute.singular_name %>.filename, <%= attribute.singular_name %> %>
<%% end %> <% else -%> - <%%= <%= singular_table_name %>.<%= attribute.column_name %> %> + <%%= <%= singular_name %>.<%= attribute.column_name %> %> <% end -%>

<% end -%>

- <%%= link_to "Show this <%= human_name.downcase %>", <%= singular_table_name %> %> + <%%= link_to "Show this <%= human_name.downcase %>", <%= singular_name %> %>

diff --git a/railties/test/generators/scaffold_generator_test.rb b/railties/test/generators/scaffold_generator_test.rb index 932c1a7d4d..cefd17a843 100644 --- a/railties/test/generators/scaffold_generator_test.rb +++ b/railties/test/generators/scaffold_generator_test.rb @@ -273,6 +273,12 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase assert_match(%("New role", new_admin_role_path), content) end + assert_file "app/views/admin/roles/_role.html.erb" do |content| + assert_match(%("Show this role", role), content) + assert_match "role", content + assert_no_match "admin_role", content + end + %w(edit new show _form).each do |view| assert_file "app/views/admin/roles/#{view}.html.erb" end