Вычисляемые поля в SimpleForm с ruby ​​на рельсах - PullRequest
0 голосов
/ 27 января 2019

Я новичок в ruby ​​на рельсах, и моя проблема с использованием SimpleForm. Я хочу отключить поле «Сводка», которое отключено для редактирования пользователем и рассчитано из других полей этой же формы, если поля ввода будут изменены

Используемая формула: final_value = sumary - (err1 + err2 + err3)

Мой код просмотра

  <%= simple_form_for(@linka100, url: tesgal_linka100_path) do |f| %>

  <%= f.label :sumary, "Summary" %>
  <%= f.number_field :sumary, min: 0, max: 9999, step: 1, only_integer: true %>

  <%= f.number_field :err_1, min: 0, max: 9999, step: 1, placeholder: "Err.1" %>
  <%= f.number_field :err_2, min: 0, max: 9999, step: 1, placeholder: "Err.2" %>
  <%= f.number_field :err_3, min: 0, max: 9999, step: 1, placeholder: "Err.3" %>
<%= f.label :final_value, "Final value" %>
  <%= f.number_field :final_value, min: 0, disabled: true, max: 9999, step: 1, **value: @linka100.sumary - (@linka100.err1 + @linka100.err2 + @linka100.err3)** %>
  <%= f.submit "Ulož údaje", class: "btn btn-primary" %>
<% end %>

1 Ответ

0 голосов
/ 27 января 2019

Проблема здесь в том, что поведение отключено, когда вы устанавливаете поле формы как отключенное, это значение не будет отправлено вашему контроллеру.Таким образом, вместо этого вы можете использовать только для чтения.

Примечание. Обратите внимание: со стороны клиента можно редактировать значения полей, редактируя HTML-код в браузере, поэтому всегда выполняйте проверки на стороне сервера.

<%= f.number_field :final_value, min: 0, readonly: true, max: 9999, step: 1, **value: @linka100.sumary - (@linka100.err1 + @linka100.err2 + @linka100.err3)** %>
...