在 Rails 5.1 中,我使用 time_select 助手从“时间”数据类型的表列创建了一个下拉列表:
<div class="col-md-12">
<%= form_for(Sleep.new) do |f| %>
<%= f.time_select :hours, {minute_step: 5, prompt: true, order: [:hour]} %>
<%= f.submit "Submit" %>
<% end %>
</div>
默认情况下,提示将下拉菜单设置为“小时”字符串。在 html 中,这一行没有任何价值:
<select id="sleep_hours_4i" name="sleep[hours(4i)]">
<option value="">Hour</option>
<option value="00">00</option>
但是,当用户没有从下拉列表中选择任何内容并使用默认的“小时”选项提交时,表单会将值发送到数据库:
0001-01-01 00:00:00
由于“小时”的值不是零,我的验证(如果没有从下拉列表中选择任何内容,它应该给用户一个通知)不起作用。
我怎样才能仍然拥有“小时”默认值,但将此选项的值设置为 nil(禁止在提交此选项时向数据库发送任何值)并能够向用户发出“选择一个小时!”之类的通知。在这种情况下?