Ruby on rails Rails创建了一系列选项中的许多关联模型
我有用户可以选择的时间段选项:Ruby on rails Rails创建了一系列选项中的许多关联模型,ruby-on-rails,Ruby On Rails,我有用户可以选择的时间段选项: [ { 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',
[
{ 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' }
]
用户
有许多:时隙
,用户应该能够根据上面的列表选择时隙
我当前的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.我可以更改列表(添加或删除),这将反映用户可从中选择的选项。关于1.,最好将时间段存储在数据库中,因为听起来您想向用户添加和删除时间段 然后,您可以拥有一个管理界面(根据需求2),以添加和删除用户能够选择的时隙。您不想硬编码这个。使其成为一个模型并告诉Rails所有关于模型关系的信息实际上简化了为时隙添加表单字段的问题 假设时隙是一个模型,并且模型关系在模型文件中定义,则可以对用户调用
f.association:timeslot
。Simple form自动生成可用时隙的下拉/组合框,您可以从中选择(多个)时隙
您可能需要自定义这些时隙的标签文本,我不确定Simple Form在开箱即用的情况下处理这些标签文本的效果如何
谢谢你的回答。为了提供更多信息,硬编码值是要创建的时间段的所有可能值的列表,而不是数据库中可用的值。给定这些可用值,将在数据库中为该用户创建时隙。