我在Rails 4中使用date_select,我希望能够将今天的日期作为默认日期,但也允许用户将日期字段留空。
<%= f.date_select(:birthdate, {include_blank: true, default: Date.today.to_date, start_year: Date.today.year - 100, end_year: Date.today.year - 18}) %>
当页面打开时,默认情况下允许空白以及今天的日期的最佳方式是什么?
谢谢!
答案 0 :(得分:9)
您需要的选项是selected
,即:
<%= f.date_select(:birthdate,
include_blank: true,
selected: Date.today, # substitute 18.years.ago to prefill year
start_year: Date.today.year - 100,
end_year: Date.today.year - 18) %>
答案 1 :(得分:2)
每次您编辑记录时,已批准的答案将覆盖已分配给生日的值。 See here。
如果您的模型是,例如@student,并且您的表单是form_for @student do | f |,那么这应该有效。如果@ student.birthdate为空,则无法通过Date.current。
<%= f.date_select(:birthdate,
include_blank: true,
selected: @student.birthdate || Date.current, # Date.current respects time_zones
start_year: Date.today.year - 100,
end_year: Date.today.year - 18) %>
但是,请注意,当您转到编辑记录时,空白选项将始终设置为当前日期,如果数据未知,则要求用户重置为空白。这可能会导致插入不良数据 - 可以说,比必须选择开始日期更不可用。