Validate candidate name

This commit is contained in:
ricola 2025-12-04 02:23:04 +01:00
parent f8b5f80823
commit b2e76f4363
3 changed files with 49 additions and 14 deletions

View file

@ -346,11 +346,20 @@ post '/votes/:id/candidates' do
find_vote
require_organizer
require_draft_vote
@candidate = Candidate.new(name: params[:name],
description: params[:description])
@candidate.vote = @vote
@candidate.save
redirect '/votes/' + @vote.secure_id
@errors = []
if params[:name].empty?
@errors << OpenStruct.new(:attribute => :name, :type => :blank)
end
if not @errors.empty?
@params = params
erb :votes_edit
else
@candidate = Candidate.new(name: params[:name],
description: params[:description])
@candidate.vote = @vote
@candidate.save
redirect '/votes/' + @vote.secure_id
end
end
get '/votes/:id/candidates/:cid' do
@ -360,6 +369,8 @@ get '/votes/:id/candidates/:cid' do
require_draft_vote
find_candidate
require_candidate_in_vote
params[:name] = @candidate.name
params[:description] = @candidate.description
erb :candidates_edit
end
@ -370,11 +381,20 @@ post '/votes/:id/candidates/:cid' do
require_draft_vote
find_candidate
require_candidate_in_vote
@candidate.name = params[:name]
@candidate.description = params[:description]
@candidate.save
redirect '/votes/' + @vote.secure_id
erb :candidates_edit
@errors = []
if params[:name].empty?
@errors << OpenStruct.new(:attribute => :name, :type => :blank)
end
if not @errors.empty?
@params = params
erb :candidates_edit
else
@candidate.name = params[:name]
@candidate.description = params[:description]
@candidate.save
redirect '/votes/' + @vote.secure_id
erb :candidates_edit
end
end
post '/votes/:id/candidates/:cid/delete' do

View file

@ -1,13 +1,21 @@
<h1 class="mb-5"><%= _("Edit candidate") %></h1>
<% if @errors %>
<% @errors.each do |error| %>
<% if error.attribute == :name and error.type == :blank %>
<p class="alert alert-warning mb-4"><%= _("Enter a name.") %></p>
<% end %>
<% end %>
<% end %>
<form action="/votes/<%= @vote.secure_id %>/candidates/<%= @candidate.id %>" method="post">
<div class="mb-3">
<label for="name" class="form-label"><%= _("Name") %></label>
<input type="text" name="name" value="<%= @candidate.name %>" class="form-control">
<input type="text" name="name" value="<%= params[:name] %>" class="form-control">
</div>
<div class="mb-3">
<label for="description" class="form-label"><%= _("Description") %></label>
<textarea type="text" name="description" class="form-control"><%= @candidate.description %></textarea>
<textarea type="text" name="description" class="form-control"><%= params[:description] %></textarea>
</div>
<button type="submit" class="btn btn-primary"><%= _("Save") %></button>
</form>

View file

@ -40,14 +40,21 @@
<% if @vote.candidates.empty? %>
<p class="alert alert-primary mb-4"><%= _("This vote has no candidates yet. Add a first candidate.") %></p>
<% end %>
<% if @errors %>
<% @errors.each do |error| %>
<% if error.attribute == :name and error.type == :blank %>
<p class="alert alert-warning mb-4"><%= _("Enter a name.") %></p>
<% end %>
<% end %>
<% end %>
<form action="/votes/<%= @vote.secure_id %>/candidates" method="post">
<div class="mb-3">
<label for="name" class="form-label"><%= _("Name") %></label>
<input type="text" name="name" class="form-control">
<input type="text" name="name" value="<%= params[:name] %>" class="form-control">
</div>
<div class="mb-3">
<label for="description" class="form-label"><%= _("Description") %></label>
<textarea type="text" name="description" class="form-control"></textarea>
<textarea type="text" name="description" class="form-control"><%= params[:description] %></textarea>
</div>
<% if @vote.candidates.length < 2 %>
<button type="submit" class="btn btn-primary"><%= _("Add candidate") %></button>