1
0

Improve #create action

This commit is contained in:
cryptogopher 2021-04-20 16:57:15 +02:00
parent 1b634dea2b
commit 37e3b98788
4 changed files with 20 additions and 5 deletions

View File

@ -28,8 +28,15 @@ class TargetsController < ApplicationController
params[:goal][:targets_attributes].each { |ta| ta[:effective_from] = @effective_from }
if @goal.update(targets_params)
flash.now[:notice] = 'Created new target(s)'
prepare_targets
count = @goal.targets.target.length
if count > 0
flash.now[:notice] = t('.success', count: count)
prepare_targets
else
flash.now[:warning] = t('.success', count: 0)
@targets = [@goal.targets.new]
render :new
end
else
@targets = @goal.targets.select(&:changed_for_autosave?)
@targets.each { |t| t.thresholds.new unless t.thresholds.present? }

View File

@ -6,7 +6,11 @@ class Goal < ActiveRecord::Base
class_name: 'Exposure', extend: BodyTracking::TogglableExposures
has_many :quantities, -> { order "lft" }, through: :exposures
accepts_nested_attributes_for :targets, allow_destroy: true
accepts_nested_attributes_for :targets, allow_destroy: true,
reject_if: proc { |attrs|
attrs[:quantity_id].blank? &&
attrs[:thresholds_attributes].all? { |t| t[:value].blank? }
}
include Validations::NestedUniqueness
validates_nested_uniqueness_for :targets,
:effective_from, :quantity_id, :item_type, :item_id, :scope,

View File

@ -42,8 +42,7 @@
var row = form.find('p.target:visible:last');
var new_row = row.clone().insertAfter(row);
new_row.find('em').text('<%= t ".choose_quantity" %>');
new_row.find('input, select').val('');
new_row.find('select[id$=__unit_id]').val(row.find('select[id$=__unit_id]').val());
new_row.find('input, select:first').val('');
new_row.find('label:first').hide();
form.find('p.target:visible a.icon-del').show();
}

View File

@ -117,6 +117,11 @@ en:
heading: 'Targets'
show:
label_target: 'Target'
create:
success:
zero: "No targets specified"
one: "Created 1 target"
other: "Created %{count} targets"
meals:
contextual:
link_new_meal: 'New meal'