Ruby on rails rails提交复选框,并选择匹配项
我有一个表单,显示日期和时间,就像这样 它的代码如下所示:Ruby on rails rails提交复选框,并选择匹配项,ruby-on-rails,ruby,ruby-on-rails-5,erb,Ruby On Rails,Ruby,Ruby On Rails 5,Erb,我有一个表单,显示日期和时间,就像这样 它的代码如下所示: <%= f.fields_for :availabilities do |ff| %> <% ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"].each do |day| %> <div class="row"> <div class="col-md-4">
<%= 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"]}
<%= ff.check_box "availabilities[#{idx}][day]", .... %>
<%= ff.select "availabilitlies[#{idx}][start_time]", .... %>
<%= ff.select "availabilitlies[#{idx}][end_time]", .... %>
我真正想要的是:
"availabilities"=>[{"start_time"=> "1 AM", "end_time"=>"1 AM", "day" => "Monday"},{"start_time"=> ...},...]
仅适用于选定的天数
从控制员方面看,我拥有如下许可:
:availabilities => [:day, :start_time, :end_time],
编辑:
我将
multiple
更改为false
,现在我的可用性有了我想要的格式,但我只得到最后一个选中的字段,而不是所有选中字段及其关联时间的数组您必须按某种方式对字段名进行分组。试试这个:
首先,使用带有索引的每个\u
创建一些索引以对它们进行分组:
["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"].each_with_indexx do |day, idx|
现在你可以这样写:
<%= 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"]}
<%= ff.check_box "availabilities[#{idx}][day]", .... %>
<%= ff.select "availabilitlies[#{idx}][start_time]", .... %>
<%= ff.select "availabilitlies[#{idx}][end_time]", .... %>
请尝试以下代码:
<%= f.fields_for :availabilities do |ff| %>
<div class="row">
<div class="col-md-4">
<div class="ck-button">
<label>
<% days = ['Mon', 'Tue', 'Wen', 'Thu', 'Fri', 'Sat', 'Sun'] %>
<% days.map do |day| %>
<%= ff.check_box :count,{multiple: false},day,nil %>
<%= ff.label day %>
<%end%>
</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 %>
(@climater.available_times.key?(天)?@climater.available_times[天][:开始]:'7')}%>
(@climater.available_times.key?(day)?@climater.available_times[day][:end]:'17')}%>