2012-10-04 22 views
5

非常簡單的問題,但似乎無法解決問題!我創建了一個出生日期表單,以確保用戶只有在18歲以上才能註冊。我有date_select,並且可以很好地設置開始年份,但是如何設置結束年份以便它是18年前?我將在模型中使用驗證器,但不希望某人能夠首先輸入錯誤的信息。Rails - 在18年前的表單中設置date_select

我已經看遍了所有,但只能找到有關如何使用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

嘗試

Time.now.year - 18 

Date.today.year - 18 
+1

試過了 - 它與「與時間的長整數比較失敗」出現。已經嘗試了我能想到的所有變化 - Rails或其他東西不支持此功能!? – ecs

+0

你說得對,對不起 - 我已經調整了解決方案。 –

+0

剛剛發現,以及!感謝您的幫助:0) – ecs

2

找到了答案上this page。只是改變它到-18,而不是+5:

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

你也可以這樣做:

18.years.ago.year 
相關問題