我有用户应该可以选择的时间段选项:
[
{ day_of_week: 'Thursday', time_of_day: '7 am' },
{ day_of_week: 'Thursday', time_of_day: '8 am' },
{ day_of_week: 'Thursday', time_of_day: '9 am' },
{ day_of_week: 'Friday', time_of_day: '7 am' },
{ day_of_week: 'Friday', time_of_day: '8 am' },
{ day_of_week: 'Friday', time_of_day: '9 am' },
{ day_of_week: 'Friday', time_of_day: '10 am' },
{ day_of_week: 'Saturday', time_of_day: '8 am' },
{ day_of_week: 'Saturday', time_of_day: '9 am' },
{ day_of_week: 'Saturday', time_of_day: '10 am' }
]
User
has_many :timeslots
,用户应该可以根据上面的列表选择Timeslot
。
我当前的HTML:
<%= simple_form_for(current_user, url: registration_path(:user)) do |f| %>
<% @timeslots.each do |day, values| %>
<div class="lead">
<%= day %>
</div>
<%= f.simple_fields_for :timeslots, values.sort_by { |slot| slot[:time_of_day].to_i } do |ff, something| %>
<div class="form-check">
<label class="form-check-label">
<%= ff.input_field :selected %>
<%= ff.object.time_of_day %>
</label>
</div>
<% end %>
<% end %>
<%= f.submit 'Update', class: 'btn btn-primary' %>
<% end %>
我想做两件事: 1.不必为数据库预先为用户构建时隙 2.我可以更改列表(添加或删除),这将反映用户可供选择的选项
答案 0 :(得分:0)
关于1.,最好将时隙存储在数据库中,因为它听起来像是要添加和删除用户的时隙。
然后,您可以拥有管理界面(根据要求2),添加和删除用户可以选择的时间段。你不想硬编码。将它作为模型并告诉Rails关于模型relatinoships的所有内容实际上简化了为时隙添加表单字段的问题。
假设时间段是模型,模型关系在模型文件中定义,您可以在用户上调用f.association :timeslot
。简单表单自动生成可用时隙的下拉/组合框,您可以从中选择(多个)时隙。
您可能想要自定义这些时间段的标签文本,我不确定Simple Form如何处理开箱即用的内容。
<%= simple_form_for(current_user, url: registration_path(:user)) do |f| %>
<%= f.association :timeslots %>
<%= f.submit 'Update', class: 'btn btn-primary' %>
<% end %>