Rails - 18年前以形式设置date_select

时间:2012-10-04 12:45:47

标签: ruby-on-rails date datetime

非常简单的问题,但似乎无法解决它!我正在创建一个出生日期表格,以确保用户只有在18岁以上才能注册。我有一个date_select,并且可以设置开始年份,但如何设置结束年份以便它是18年前的?我也将在模型中使用验证器,但不希望有人能够首先输入错误的信息。

我看了一遍,但只能找到有关如何使用time.ago和验证器的信息,我已经对它进行了分类,而不是表单本身。

或者,也许哪个更好 - 有没有办法让前两个项目(日和月)有一个date_select下拉列表,还有一年的文本框?这些方面的东西:

<%= f.date_select :date_of_birth, :order => [:day, :month] %><%= f.text_field :date_of_birth.year, :length => 4 %>

这是我到目前为止所做的:

<%= f.label :date_of_birth %><br />
<%= f.date_select :date_of_birth, :order => [:day, :month, :year], :start_year => 1900, :end_year =>  %>

谢谢!

3 个答案:

答案 0 :(得分:3)

尝试

Time.now.year - 18

Date.today.year - 18

答案 1 :(得分:3)

this page找到答案。只需将其更改为-18而不是+5:

<%= f.date_select :date_of_birth, :order => [:day, :month, :year], :start_year => 1900, :end_year => Time.now.year - 18 %>

答案 2 :(得分:2)

你也可以这样做:

18.years.ago.year