Хотите знать, есть ли более чистый метод выполнения условия, когда переменная может равняться 4, 6 или 8 без повторения предыдущих вводов?
Например.
<%= form_with(model: sale, local: true) do |f| %>
<% if @sale.cost == 4 %>
<%= f.text_field :sale_1 %>
<%= f.text_field :sale_2 %>
<%= f.text_field :sale_3 %>
<%= f.text_field :sale_4 %>
<% elsif @sale.cost == 6 %>
<%= f.text_field :sale_1 %>
<%= f.text_field :sale_2 %>
<%= f.text_field :sale_3 %>
<%= f.text_field :sale_4 %>
<%= f.text_field :sale_5 %>
<%= f.text_field :sale_6 %>
<% elsif @sale.cost == 8 %>
<%= f.text_field :sale_1 %>
<%= f.text_field :sale_2 %>
<%= f.text_field :sale_3 %>
<%= f.text_field :sale_4 %>
<%= f.text_field :sale_5 %>
<%= f.text_field :sale_6 %>
<%= f.text_field :sale_7 %>
<%= f.text_field :sale_8 %>
<% end %>
<% end %>
Так что вышеповторяет предыдущие входные данные (т. е. <%= f.text_field :sale_1 %>
, <%= f.text_field :sale_2 %>
) для каждого оператора.Есть ли способ заявить, что если @sale.cost == 6
, то добавить два обязательных входа после предыдущих 4?Например:
<%= form_with(model: sale, local: true) do |f| %>
<% if @sale.cost == 4 %>
<%= f.text_field :sale_1 %>
<%= f.text_field :sale_2 %>
<%= f.text_field :sale_3 %>
<%= f.text_field :sale_4 %>
<% some statement @sale.cost == 6 %>
<%= f.text_field :sale_5 %>
<%= f.text_field :sale_6 %>
<% some statement @sale.cost == 8 %>
<%= f.text_field :sale_7 %>
<%= f.text_field :sale_8 %>
<% end %>