我有一个表单,我有一个申请日期的字段。此值是可选的,因为它可以在以后提供(即,在保存表单时不一定存在)。
使用date_select/3
,我无法找到将此值设为可选的简单方法。即使default: nil
作为选项提供,当前日期也会填入字段中。这不是理想的行为,因为当用户保存表单时,值也会更新。
输入日期的字段,可以将其留空(这是默认行为)。
您可以使用构建器选项并使用空提示获取可选值的日期字段:
<%= date_select f, :applied_on, builder: fn b -> %>
Date: <%= b.(:day, [prompt: ""]) %>.<%= b.(:month, [prompt: ""]) %>.<%= b.(:year, [prompt: ""]) %>
<% end %>
是否有更好,更优雅的方式来处理可选日期?
答案 0 :(得分:1)
如果字段是否需要,则应由验证处理,模型部分默认为ecto
。
来自Phoenix.HTML.Form.datetime_select/3:
中给出
:year
,:month
,:day
,:hour
,:minute
,:second
- 传递给基础选择的选项。有关更多信息,请参阅select / 4。可用的值可以在:options。
:prompt - 一个选项,在选项的顶部包含给定的提示文本
您只需将提示(或其他特定于选择的选项)设置为字段选项:year
,:month
,:day
,:hour
,{{1 :minute
的{}}和:second
}。这应该有效:
date_select
这适用于datetime_select/3,date_select/3和time_select/3。
希望这有帮助。