diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 4904528..18e133c 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,6 +1,6 @@ module ApplicationHelper # TODO: replace legacy content_tag with tag.tagname - class TabularFormBuilder < ActionView::Helpers::FormBuilder + class LabelledFormBuilder < ActionView::Helpers::FormBuilder (field_helpers - [:label]).each do |selector| class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1 def #{selector}(method, options = {}) @@ -19,7 +19,7 @@ module ApplicationHelper end end - def table_form_for(&block) + def form_for(&block) @template.content_tag(:table, class: "centered") { yield(self) } + # Display leftover error messages (there shouldn't be any) @template.content_tag(:div, @object&.errors.full_messages.join(@template.tag :br)) @@ -50,9 +50,14 @@ module ApplicationHelper end end - def tabular_form_for(record, options = {}, &block) - options.merge! builder: TabularFormBuilder - form_for(record, **options, &-> (f) { f.table_form_for(&block) }) + def labelled_form_for(record, options = {}, &block) + options.merge! builder: LabelledFormBuilder + form_for(record, **options) { |f| f.form_for(&block) } + end + + def tabular_fields_for(record_name, record_object = nil, options = {}, &block) + flash.now[:alert] = record_name.errors.full_messages unless record_name.errors.empty? + fields_for(record_name, record_object, **options, &block) end def svg_tag(source, options = {}) diff --git a/app/views/layouts/application.turbo_stream.erb b/app/views/layouts/application.turbo_stream.erb index 3c080af..9ba0c29 100644 --- a/app/views/layouts/application.turbo_stream.erb +++ b/app/views/layouts/application.turbo_stream.erb @@ -1,4 +1,6 @@ +<%= yield %> + +<%# Some views may convert ActiveRecord errors to flashes, render at the end. %> <%= turbo_stream.update :flashes do %> <%= render_flash_messages %> <% end %> -<%= yield %> diff --git a/app/views/units/_form.html.erb b/app/views/units/_form.html.erb index dce2f88..31d3d29 100644 --- a/app/views/units/_form.html.erb +++ b/app/views/units/_form.html.erb @@ -1,4 +1,4 @@ -<%= fields_for @unit do |form| %> +<%= tabular_fields_for @unit do |form| %> <%= tag.tr id: dom_id(@unit), class: "form", onkeydown: "processKey(event)", data: {link_id: link_id} do %> diff --git a/app/views/units/_form_close.html.erb b/app/views/units/_form_close.html.erb index 3a9f2dd..e11818c 100644 --- a/app/views/units/_form_close.html.erb +++ b/app/views/units/_form_close.html.erb @@ -1,2 +1,3 @@ <%= turbo_stream.close_form @unit %> +<%= turbo_stream.update :flashes %> <%#= turbo_stream.focus link_id %> diff --git a/app/views/users/confirmations/new.html.erb b/app/views/users/confirmations/new.html.erb index e05affe..be665d6 100644 --- a/app/views/users/confirmations/new.html.erb +++ b/app/views/users/confirmations/new.html.erb @@ -1,5 +1,5 @@