From be246d204fbe502e2ed63df72274540a4b1df719 Mon Sep 17 00:00:00 2001 From: Jorge Manrubia Date: Tue, 9 Sep 2025 15:25:38 +0200 Subject: [PATCH] Replace assignees with a turbo stream instead of replacing the full card So that we don't lose th editing context if you do it while editing a card https://fizzy.37signals.com/5986089/collections/2/cards/1479 --- app/controllers/cards/assignments_controller.rb | 3 ++- app/views/cards/edit.html.erb | 4 +--- test/controllers/cards/assignments_controller_test.rb | 9 +++++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/controllers/cards/assignments_controller.rb b/app/controllers/cards/assignments_controller.rb index 0dd3d460e..7b9464a61 100644 --- a/app/controllers/cards/assignments_controller.rb +++ b/app/controllers/cards/assignments_controller.rb @@ -6,6 +6,7 @@ class Cards::AssignmentsController < ApplicationController def create @card.toggle_assignment @collection.users.active.find(params[:assignee_id]) - render_card_replacement + + render turbo_stream: turbo_stream.replace([ @card, :assignees ], partial: "cards/display/perma/assignees", locals: { card: @card.reload }) end end diff --git a/app/views/cards/edit.html.erb b/app/views/cards/edit.html.erb index 0153e3364..31801512e 100644 --- a/app/views/cards/edit.html.erb +++ b/app/views/cards/edit.html.erb @@ -1,8 +1,6 @@ <%= turbo_frame_tag @card, :edit do %> <%= form_with model: @card, url: collection_card_path(@card.collection, @card), - data: { controller: "autoresize form local-save", - local_save_key_value: "card-#{@card.id}", - action: "turbo:submit-end->local-save#submit" } do |form| %> + data: { controller: "autoresize form local-save", local_save_key_value: "card-#{@card.id}", action: "turbo:submit-end->local-save#submit" } do |form| %>

<%= form.label :title, class: "flex flex-column align-center autoresize__wrapper", data: { autoresize_target: "wrapper", autoresize_clone_value: "" } do %> <%= form.text_area :title, class: "card-field__title input input--textarea hide-focus-ring full-width borderless txt-align-start autoresize__textarea", diff --git a/test/controllers/cards/assignments_controller_test.rb b/test/controllers/cards/assignments_controller_test.rb index e0629aee4..3c5e26997 100644 --- a/test/controllers/cards/assignments_controller_test.rb +++ b/test/controllers/cards/assignments_controller_test.rb @@ -13,12 +13,17 @@ class Cards::AssignmentsControllerTest < ActionDispatch::IntegrationTest test "create" do assert_changes "cards(:logo).assigned_to?(users(:david))", from: false, to: true do post card_assignments_path(cards(:logo)), params: { assignee_id: users(:david).id }, as: :turbo_stream - assert_card_container_rerendered(cards(:logo)) + assert_assignees_replaced(cards(:logo)) end assert_changes "cards(:logo).assigned_to?(users(:david))", from: true, to: false do post card_assignments_path(cards(:logo)), params: { assignee_id: users(:david).id }, as: :turbo_stream - assert_card_container_rerendered(cards(:logo)) + assert_assignees_replaced(cards(:logo)) end end + + private + def assert_assignees_replaced(card) + assert_turbo_stream action: :replace, target: dom_id(card, :assignees) + end end