From 6907d07d07e802b0ef5dabcc37ac886a5fe45550 Mon Sep 17 00:00:00 2001 From: Jorge Manrubia Date: Thu, 19 Jun 2025 08:25:48 +0200 Subject: [PATCH] Don't choke when a card is missing its stage This can happen if the stage was destroyed --- app/helpers/cards_helper.rb | 2 +- app/models/card/staged.rb | 4 ++++ app/views/cards/display/_preview.html.erb | 2 +- app/views/cards/display/preview/_stages.html.erb | 4 +--- app/views/cards/display/public_preview/_stages.html.erb | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/helpers/cards_helper.rb b/app/helpers/cards_helper.rb index 5a00b13f4..cb72bffd2 100644 --- a/app/helpers/cards_helper.rb +++ b/app/helpers/cards_helper.rb @@ -66,6 +66,6 @@ module CardsHelper end def cacheable_preview_parts_for(card, *options) - [ card, card.collection.workflow, card.collection.entropy_configuration, *options ] + [ card, card.workflow, card.collection.entropy_configuration, *options ] end end diff --git a/app/models/card/staged.rb b/app/models/card/staged.rb index f8036d3e3..fd9b1d09c 100644 --- a/app/models/card/staged.rb +++ b/app/models/card/staged.rb @@ -13,6 +13,10 @@ module Card::Staged stage&.workflow end + def staged? + stage.present? + end + def change_stage_to(new_stage) transaction do update! stage: new_stage diff --git a/app/views/cards/display/_preview.html.erb b/app/views/cards/display/_preview.html.erb index f4fcf466f..e0c67a9e0 100644 --- a/app/views/cards/display/_preview.html.erb +++ b/app/views/cards/display/_preview.html.erb @@ -7,7 +7,7 @@ <%= render "cards/display/preview/collection", card: card %> <%= render "cards/display/preview/tags", card: card %> - <% if workflow = card.collection.workflow %> + <% if card.staged? %> <%= card.stage.name %> diff --git a/app/views/cards/display/preview/_stages.html.erb b/app/views/cards/display/preview/_stages.html.erb index 142b17435..c3d2929f1 100644 --- a/app/views/cards/display/preview/_stages.html.erb +++ b/app/views/cards/display/preview/_stages.html.erb @@ -1,6 +1,4 @@ -<% workflow = card.collection.workflow %> - -<% if workflow %> +<% if workflow = card.workflow %>
<% workflow.stages.each do |stage| %> <%= tag.span stage.name, class: ["overflow-ellipsis btn justify-start workflow-stage txt-uppercase", { "workflow-stage--current": stage == card.stage }] %> diff --git a/app/views/cards/display/public_preview/_stages.html.erb b/app/views/cards/display/public_preview/_stages.html.erb index ed8151db9..848013cfe 100644 --- a/app/views/cards/display/public_preview/_stages.html.erb +++ b/app/views/cards/display/public_preview/_stages.html.erb @@ -1,4 +1,4 @@ -<% if workflow = card.collection.workflow %> +<% if workflow = card.workflow %>
<% workflow.stages.each do |stage| %> <%= tag.div stage.name,