From 6decd6eacafc61f6b7781df9e6fd195dcdac9019 Mon Sep 17 00:00:00 2001 From: LPW Date: Thu, 20 Nov 2025 02:31:03 -0500 Subject: [PATCH] - Handle blank series in `trend` method to avoid nil errors (#357) - Add Turbo Stream rendering for SimpleFIN items to address missing content - Update dashboard view to render correctly when trend data is unavailable Co-authored-by: Josh Waldrep --- app/controllers/simplefin_items_controller.rb | 13 ++++++++++++- app/models/series.rb | 1 + app/views/pages/dashboard/_net_worth_chart.html.erb | 13 ++++++------- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/app/controllers/simplefin_items_controller.rb b/app/controllers/simplefin_items_controller.rb index 77ba9b5bc..ac15f555c 100644 --- a/app/controllers/simplefin_items_controller.rb +++ b/app/controllers/simplefin_items_controller.rb @@ -515,6 +515,17 @@ class SimplefinItemsController < ApplicationController @simplefin_item = Current.family.simplefin_items.build(setup_token: setup_token) end @error_message = message - render context, status: :unprocessable_entity + + if turbo_frame_request? + # Re-render the SimpleFIN providers panel in place to avoid "Content missing" + @simplefin_items = Current.family.simplefin_items.ordered + render turbo_stream: turbo_stream.replace( + "simplefin-providers-panel", + partial: "settings/providers/simplefin_panel", + locals: { simplefin_items: @simplefin_items } + ), status: :unprocessable_entity + else + render context, status: :unprocessable_entity + end end end diff --git a/app/models/series.rb b/app/models/series.rb index b50a38eec..501d78fba 100644 --- a/app/models/series.rb +++ b/app/models/series.rb @@ -57,6 +57,7 @@ class Series end def trend + return nil if values.blank? @trend ||= Trend.new( current: values.last&.value, previous: values.first&.value, diff --git a/app/views/pages/dashboard/_net_worth_chart.html.erb b/app/views/pages/dashboard/_net_worth_chart.html.erb index 2376d79c6..d368d3a54 100644 --- a/app/views/pages/dashboard/_net_worth_chart.html.erb +++ b/app/views/pages/dashboard/_net_worth_chart.html.erb @@ -9,14 +9,13 @@

<%= t(".title") %>

-

"> - <%= series.trend.current.format %> -

- - <% if series.trend.nil? %> -

<%= t(".data_not_available") %>

- <% else %> + <% if series.trend.present? %> +

"> + <%= series.trend.current.format %> +

<%= render partial: "shared/trend_change", locals: { trend: series.trend, comparison_label: period.comparison_label } %> + <% else %> +

<%= t(".data_not_available") %>

<% end %>