From cf503bfba371a195027d900cd235a2a4fb44f6c3 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 2 Nov 2025 20:20:01 +0100 Subject: [PATCH] Prefer templates for turbo streams in all but the very simplest cases (And probably even then) --- app/controllers/collections/publications_controller.rb | 8 -------- app/controllers/concerns/turbo_flash.rb | 6 ++++++ .../collections/publications/create.turbo_stream.erb | 2 ++ .../collections/publications/destroy.turbo_stream.erb | 2 ++ 4 files changed, 10 insertions(+), 8 deletions(-) create mode 100644 app/views/collections/publications/create.turbo_stream.erb create mode 100644 app/views/collections/publications/destroy.turbo_stream.erb diff --git a/app/controllers/collections/publications_controller.rb b/app/controllers/collections/publications_controller.rb index 2043cf60a..78400dd3c 100644 --- a/app/controllers/collections/publications_controller.rb +++ b/app/controllers/collections/publications_controller.rb @@ -3,18 +3,10 @@ class Collections::PublicationsController < ApplicationController def create @collection.publish - render turbo_stream: [ - turbo_stream.replace([ @collection, :publication ], partial: "collections/edit/publication", locals: { collection: @collection }), - turbo_stream_flash(notice: "Saved") - ] end def destroy @collection.unpublish @collection.reload - render turbo_stream: [ - turbo_stream.replace([ @collection, :publication ], partial: "collections/edit/publication", locals: { collection: @collection }), - turbo_stream_flash(notice: "Saved") - ] end end diff --git a/app/controllers/concerns/turbo_flash.rb b/app/controllers/concerns/turbo_flash.rb index 7e313a5b9..93dad24ed 100644 --- a/app/controllers/concerns/turbo_flash.rb +++ b/app/controllers/concerns/turbo_flash.rb @@ -1,4 +1,10 @@ module TurboFlash + extend ActiveSupport::Concern + + included do + helper_method :turbo_stream_flash + end + private def turbo_stream_flash(**flash_options) turbo_stream.replace(:flash, partial: "layouts/shared/flash", locals: { flash: flash_options }) diff --git a/app/views/collections/publications/create.turbo_stream.erb b/app/views/collections/publications/create.turbo_stream.erb new file mode 100644 index 000000000..62379328c --- /dev/null +++ b/app/views/collections/publications/create.turbo_stream.erb @@ -0,0 +1,2 @@ +<%= turbo_stream.replace([ @collection, :publication ], partial: "collections/edit/publication", locals: { collection: @collection }) %> +<%= turbo_stream_flash(notice: "Saved") %> diff --git a/app/views/collections/publications/destroy.turbo_stream.erb b/app/views/collections/publications/destroy.turbo_stream.erb new file mode 100644 index 000000000..62379328c --- /dev/null +++ b/app/views/collections/publications/destroy.turbo_stream.erb @@ -0,0 +1,2 @@ +<%= turbo_stream.replace([ @collection, :publication ], partial: "collections/edit/publication", locals: { collection: @collection }) %> +<%= turbo_stream_flash(notice: "Saved") %>