From b1b0b22f502fbc7cf64c26d81d689db2dbd82e05 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Sat, 20 Mar 2021 04:05:09 +1030 Subject: [PATCH] Always render attachment partials as HTML with :html format inside trix editor --- .../lib/action_text/attachments/trix_conversion.rb | 2 +- actiontext/test/dummy/app/views/messages/edit.json.erb | 4 ++++ actiontext/test/integration/controller_render_test.rb | 9 +++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 actiontext/test/dummy/app/views/messages/edit.json.erb diff --git a/actiontext/lib/action_text/attachments/trix_conversion.rb b/actiontext/lib/action_text/attachments/trix_conversion.rb index 2829da1f59..8e70e45432 100644 --- a/actiontext/lib/action_text/attachments/trix_conversion.rb +++ b/actiontext/lib/action_text/attachments/trix_conversion.rb @@ -28,7 +28,7 @@ module ActionText private def trix_attachment_content if partial_path = attachable.try(:to_trix_content_attachment_partial_path) - ActionText::Content.render(partial: partial_path, object: self, as: model_name.element) + ActionText::Content.render(partial: partial_path, formats: :html, object: self, as: model_name.element) end end end diff --git a/actiontext/test/dummy/app/views/messages/edit.json.erb b/actiontext/test/dummy/app/views/messages/edit.json.erb new file mode 100644 index 0000000000..9c4d24a50a --- /dev/null +++ b/actiontext/test/dummy/app/views/messages/edit.json.erb @@ -0,0 +1,4 @@ +{ + "id": <%= @message.id %>, + "form": "<%= j render partial: "form", formats: :html, locals: { message: @message } %>" +} diff --git a/actiontext/test/integration/controller_render_test.rb b/actiontext/test/integration/controller_render_test.rb index cf9667401e..de50b769b7 100644 --- a/actiontext/test/integration/controller_render_test.rb +++ b/actiontext/test/integration/controller_render_test.rb @@ -24,6 +24,15 @@ class ActionText::ControllerRenderTest < ActionDispatch::IntegrationTest assert_select content, "img:match('src', ?)", %r"//loocalhoost/.+/racecar" end + test "renders Trix with content attachment as HTML when the request format is not HTML" do + message_with_person_attachment = messages(:hello_alice) + + get edit_message_path(message_with_person_attachment, format: :json) + + form_html = response.parsed_body["form"] + assert_match %r" class=\S+mentionable-person\b", form_html + end + test "resolves partials when controller is namespaced" do blob = create_file_blob(filename: "racecar.jpg", content_type: "image/jpg") message = Message.create!(content: ActionText::Content.new.append_attachables(blob))