У меня есть форма, которая отображает даты и время примерно так
Код выглядит следующим образом:
<%= f.fields_for :availabilities do |ff| %>
<% ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"].each do |day| %>
<div class="row">
<div class="col-md-4">
<div class="ck-button">
<label>
<%= ff.check_box "day", {multiple: true, checked: @therapist.available_times.key?(day)}, day, false %>
<span><%= day %></span>
</label>
</div>
</div>
<div class="col-md-4">
<div class="answer">
<%= ff.select "start_time", ["1 AM", "2 AM", "3 AM", "4 AM", "5 AM", "6 AM", "7 AM", "8 AM", "9 AM", "10 AM", "11 AM", "12 PM", "1 PM", "2 PM", "3 PM", "4 PM", "5 PM", "6 PM", "7 PM", "8 PM", "9 PM", "10 PM", "11 PM"], {:selected => (@therapist.available_times.key?(day) ? @therapist.available_times[day][:start] : '7' )} %>
</div>
</div>
<div class="col-md-4">
<div class="answer">
<%= ff.select "end_time", ["1 AM", "2 AM", "3 AM", "4 AM", "5 AM", "6 AM", "7 AM", "8 AM", "9 AM", "10 AM", "11 AM", "12 PM", "1 PM", "2 PM", "3 PM", "4 PM", "5 PM", "6 PM", "7 PM", "8 PM", "9 PM", "10 PM", "11 PM"], {:selected => (@therapist.available_times.key?(day) ? @therapist.available_times[day][:end] : '17' )} %>
</div>
</div>
</div>
<% end %>
Когда я отправляюоднако при этом данные, отправляемые на мой контроллер, выглядят так:
"availabilities"=>{"start_time"=>"1 AM", "end_time"=>"1 AM", "day"=>["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]}
Что я действительно хочу, так это получить:
"availabilities"=>[{"start_time"=> "1 AM", "end_time"=>"1 AM", "day" => "Monday"},{"start_time"=> ...},...]
только для выбранных дней.
Со стороны диспетчера у меня есть разрешение, которое выглядит следующим образом:
:availabilities => [:day, :start_time, :end_time],
РЕДАКТИРОВАТЬ: я изменил multiple
на false
, и теперь моя доступность имеет желаемую форму, но я получаю толькопоследний проверенный, а не массив всех проверенных полей и связанных с ними времен