如何在Rails中的date_select中设置默认日期和include_blank

时间:2015-09-17 22:30:23

标签: ruby-on-rails

我在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}) %>

当页面打开时,默认情况下允许空白以及今天的日期的最佳方式是什么?

谢谢!

2 个答案:

答案 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) %>

但是,请注意,当您转到编辑记录时,空白选项将始终设置为当前日期,如果数据未知,则要求用户重置为空白。这可能会导致插入不良数据 - 可以说,比必须选择开始日期更不可用。