2012-10-04 29 views
5

Pregunta muy simple, pero parece que no funciona! Estoy creando un formulario de fecha de nacimiento, para garantizar que un usuario solo pueda registrarse si es mayor de 18. Tengo un fecha_seleccione, y estoy bien establecer el año de inicio, pero ¿cómo configuro el año final para que es hace 18 años? Voy a usar validadores en el modelo también, pero no quiero que alguien pueda ingresar la información incorrecta en primer lugar.Rails - set date_select en forma hace 18 años

He buscado todo, pero solo puedo encontrar información sobre cómo usar time.ago con validadores, que ya he ordenado, no en el formulario en sí.

O, como alternativa, ¿qué podría ser mejor? ¿Hay alguna manera de tener un menú desplegable de fecha para los primeros dos artículos (día & de mes) y un cuadro de texto para el año? Algo a lo largo de estas líneas:

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

Esto es lo que tengo hasta ahora:

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

Gracias !!

Respuesta

3

Trate

Time.now.year - 18 

o

Date.today.year - 18 
+1

pretendía que - se trata con "comparación de Fixnum con el tiempo no se pudo". He intentado todas las variaciones de todo lo que puedo pensar: ¿esta característica no es compatible con Rails o algo así? – ecs

+0

Tienes razón, lo siento, he ajustado la solución. –

+0

¡Ya lo descubrí! Gracias por su ayuda: 0) – ecs

2

encontrado la respuesta en this page. Sólo cambió a -18 en lugar de 5:

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

También puede hacer:

18.years.ago.year 
Cuestiones relacionadas