【问题标题】:Rails - set date_select in form 18 years agoRails - 在 18 年前的表单中设置 date_select
【发布时间】:2012-10-04 12:45:47
【问题描述】:

非常简单的问题,但似乎无法解决!我正在创建一个出生日期表格,以确保用户只有年满 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 =>  %>

谢谢!!

【问题讨论】:

    标签: ruby-on-rails date datetime


    【解决方案1】:

    试试

    Time.now.year - 18
    

    Date.today.year - 18
    

    【讨论】:

    • 试过了 - 它提出了“Fixnum 与时间的比较失败”。已经尝试了我能想到的所有变体 - Rails 不支持此功能还是什么!?
    • 刚刚也发现了!感谢您的帮助:0)
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你也可以这样做:

      18.years.ago.year
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-19
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多