Phoenix.HTML.Form date_select / 3表示可选日期

时间:2016-12-11 20:20:32

标签: phoenix-framework

问题

我有一个表单,我有一个申请日期的字段。此值是可选的,因为它可以在以后提供(即,在保存表单时不一定存在)。

使用date_select/3,我无法找到将此值设为可选的简单方法。即使default: nil作为选项提供,当前日期也会填入字段中。这不是理想的行为,因为当用户保存表单时,值也会更新。

我喜欢什么

输入日期的字段,可以将其留空(这是默认行为)。

到目前为止我得到了什么

您可以使用构建器选项并使用空提示获取可选值的日期字段:

<%= date_select f, :applied_on, builder: fn b -> %>
    Date: <%= b.(:day, [prompt: ""]) %>.<%= b.(:month, [prompt: ""]) %>.<%= b.(:year, [prompt: ""]) %>
<% end %>

是否有更好,更优雅的方式来处理可选日期?

1 个答案:

答案 0 :(得分:1)

如果字段是否需要,则应由验证处理,模型部分默认为ecto

来自Phoenix.HTML.Form.datetime_select/3

  

:year:month:day:hour:minute:second - 传递给基础选择的选项。有关更多信息,请参阅select / 4。可用的值可以在:options。

中给出

来自Phoenix.HTML.Form.select/4

  

:prompt - 一个选项,在选项的顶部包含给定的提示文本

您只需将提示(或其他特定于选择的选项)设置为字段选项:year:month:day:hour,{{1 :minute的{​​}}和:second}。这应该有效:

date_select

这适用于datetime_select/3date_select/3time_select/3

希望这有帮助。