Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-在18年前的表单中设置日期_Ruby On Rails_Date_Datetime - Fatal编程技术网

Ruby on rails Rails-在18年前的表单中设置日期

Ruby on rails Rails-在18年前的表单中设置日期,ruby-on-rails,date,datetime,Ruby On Rails,Date,Datetime,非常简单的问题,但似乎无法解决!!我正在创建一个出生日期表单,以确保用户只有在年满18岁时才能注册。我已经选择了一个日期,我可以设置开始年份,但是如何设置结束年份,使之成为18年前的年份呢?我也将在模型中使用验证器,但首先不希望有人能够输入错误的信息 我已经找遍了,但是只能找到关于如何使用time.ago和验证器的信息,我已经对其进行了排序,而不是表单本身 或者,哪一种可能更好?有没有办法为前两项(日和月)设置一个日期选择下拉列表,并为年份设置一个文本框?大致如下: <%= f.date_

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

我已经找遍了,但是只能找到关于如何使用time.ago和验证器的信息,我已经对其进行了排序,而不是表单本身

或者,哪一种可能更好?有没有办法为前两项(日和月)设置一个日期选择下拉列表,并为年份设置一个文本框?大致如下:

<%= f.date_select :date_of_birth, :order => [:day, :month] %><%= f.text_field :date_of_birth.year, :length => 4 %>
[:天,月]>4%
这就是我到目前为止所做的:

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

[:天,:月,:年],:开始\年=>1900,:结束\年=>%>
谢谢

试试看

Time.now.year - 18

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

<%= f.date_select :date_of_birth, :order => [:day, :month, :year], :start_year => 1900, :end_year => Time.now.year - 18 %>
[:天、月、年]、:开始年份=>1900、:结束年份=>Time.now.year-18%>
您还可以执行以下操作:

18.years.ago.year

尝试过——它提出了“Fixnum与时间的比较失败”。我已经尝试了我所能想到的每一种变化——Rails或其他东西不支持这个特性吗!?我也发现了!感谢您的帮助:0)
18.years.ago.year