Я пытаюсь создать форму и показывать поле число_, только если установлен соответствующий переключатель. Я могу спрятать поле number_field с помощью CSS, но, поскольку все поля number_fields имеют одно и то же имя, приложение сохраняет в базе данных только последнее поле (даже если соответствующая радиосвязь снята, поскольку CSS скрывает только поле). Существует способ отправить данные числа_поля в базу данных только в том случае, если отмечена их относительная радиокнопка?
Чтобы проиллюстрировать проблему другими словами: если этот код генерирует 5 радиокнопок, когда они отправляются в базу данных, значение последнего поля number__ является окончательным значением, записанным в базе данных, в то время как я sh говорю, что в базу данных отправляется только значение поля number_field с выбранной относительной кнопкой radio_button.
Существует способ делать это в контроллере или модели?
Мой взгляд:
<% @shipping_method_list.each do |shipping| %>
<div>
<%= f.radio_button :shipping_method_id, shipping.id %>
<% @sm_id = :shipping_method_id.to_s + "_" + shipping.id.to_s %>
<%= f.label @sm_id, shipping.name %>
<span class="reveal-if-active">Cost: <%= f.number_field :shipping_cost %></span> # This is what I want to disable when the radio isn't checked.
</div>
<% end %>
И мой CSS:
.reveal-if-active {
opacity: 0;
max-height: 0;
overflow: hidden;
}
input[type="radio"]:checked ~ .reveal-if-active,
input[type="checkbox"]:checked ~ .reveal-if-active {
opacity: 1;
max-height: 100px;
overflow: visible;
}