Compare commits

..
2 Commits
Author SHA1 Message Date
sto 570e517c28 Improve completions 2025-03-21 19:50:03 +01:00
sto 15e2493f87 Show form errors 2025-03-21 19:49:37 +01:00
5 changed files with 29 additions and 4 deletions
+4
View File
@@ -1,3 +1,7 @@
// Sassy
@import "bootstrap";
.error-message {
color: var(--bs-danger)
}
+5 -1
View File
@@ -22,7 +22,7 @@ class CompletionsController < ApplicationController
redirect_to contest_path(@contest)
else
logger = Logger.new(STDOUT)
logger.info(@completion.errors.full_messages)
logger.info(@completion.errors)
@title = "New completion"
render :new, status: :unprocessable_entity
end
@@ -42,8 +42,12 @@ class CompletionsController < ApplicationController
def destroy
@completion.destroy
if params[:contestant_id]
redirect_to contest_contestant_path(@contest, params[:contestant_id])
else
redirect_to contest_path(@contest)
end
end
private
+2
View File
@@ -6,4 +6,6 @@ class Completion < ApplicationRecord
attr_accessor :display_time_from_start, :display_relative_time
validates :time_seconds, presence: true
validates_numericality_of :time_seconds
validates :puzzle_id, uniqueness: { score: :contestant }
end
+3 -1
View File
@@ -43,8 +43,10 @@
td
| #{completion.puzzle.name} - #{completion.puzzle.brand}
td
a.btn.btn-sm.btn-secondary href=edit_contest_completion_path(@contest, completion, contestant.id)
a.btn.btn-sm.btn-secondary.me-2 href=edit_contest_completion_path(@contest, completion, contestant.id)
| Edit
= link_to "Delete", contest_completion_path(contest, completion, contestant_id: contestant.id),
data: { turbo_method: :delete }, class: "btn btn-sm btn-secondary"
.row
.col
a.btn.btn-primary href=new_contest_completion_path(@contest, contestant_id: contestant.id)
+13
View File
@@ -0,0 +1,13 @@
ActionView::Base.field_error_proc = proc do |html_tag, instance|
if html_tag.include? "<label"
appended_html = ""
if instance.error_message.is_a?(Array)
appended_html = "<div class='error-message form-text'>#{instance.error_message.map(&:humanize).uniq.join(", ")}</div>"
else
appended_html = "<div class='error-message form-text'>#{instance.error_message.humanize}</div>"
end
html_tag + appended_html.html_safe
else
html_tag
end
end