From f67dacb2eeed81cb370824f4584596eff811e0c6 Mon Sep 17 00:00:00 2001 From: Haroon Ahmed Date: Tue, 24 May 2022 21:52:26 +0100 Subject: [PATCH] Fix issue when generating jbuilder views with namespaces. Co-authored-by: Hanna --- lib/generators/rails/jbuilder_generator.rb | 4 ++++ lib/generators/rails/templates/index.json.jbuilder | 2 +- lib/generators/rails/templates/show.json.jbuilder | 2 +- test/jbuilder_generator_test.rb | 12 ++++++++++++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/generators/rails/jbuilder_generator.rb b/lib/generators/rails/jbuilder_generator.rb index 0691f499..79f742e8 100644 --- a/lib/generators/rails/jbuilder_generator.rb +++ b/lib/generators/rails/jbuilder_generator.rb @@ -54,6 +54,10 @@ def attributes_list(attributes = attributes_names) def virtual_attributes attributes.select {|name| name.respond_to?(:virtual?) && name.virtual? } end + + def partial_path_name + [controller_file_path, singular_table_name].join("/") + end end end end diff --git a/lib/generators/rails/templates/index.json.jbuilder b/lib/generators/rails/templates/index.json.jbuilder index 955b0954..4e0a14e0 100644 --- a/lib/generators/rails/templates/index.json.jbuilder +++ b/lib/generators/rails/templates/index.json.jbuilder @@ -1 +1 @@ -json.array! @<%= plural_table_name %>, partial: "<%= plural_table_name %>/<%= singular_table_name %>", as: :<%= singular_table_name %> +json.array! @<%= plural_table_name %>, partial: "<%= partial_path_name %>", as: :<%= singular_table_name %> diff --git a/lib/generators/rails/templates/show.json.jbuilder b/lib/generators/rails/templates/show.json.jbuilder index 4723e6bd..4f3bf738 100644 --- a/lib/generators/rails/templates/show.json.jbuilder +++ b/lib/generators/rails/templates/show.json.jbuilder @@ -1 +1 @@ -json.partial! "<%= plural_table_name %>/<%= singular_table_name %>", <%= singular_table_name %>: @<%= singular_table_name %> +json.partial! "<%= partial_path_name %>", <%= singular_table_name %>: @<%= singular_table_name %> diff --git a/test/jbuilder_generator_test.rb b/test/jbuilder_generator_test.rb index 4884b6c7..e4a2f165 100644 --- a/test/jbuilder_generator_test.rb +++ b/test/jbuilder_generator_test.rb @@ -44,6 +44,18 @@ class JbuilderGeneratorTest < Rails::Generators::TestCase end end + test 'namespaced views are generated correctly for index' do + run_generator %w(Admin::Post --model-name=Post) + + assert_file 'app/views/admin/posts/index.json.jbuilder' do |content| + assert_match %r{json\.array! @posts, partial: "admin/posts/post", as: :post}, content + end + + assert_file 'app/views/admin/posts/show.json.jbuilder' do |content| + assert_match %r{json\.partial! "admin/posts/post", post: @post}, content + end + end + if Rails::VERSION::MAJOR >= 6 test 'handles virtual attributes' do run_generator %w(Message content:rich_text video:attachment photos:attachments)