2012-09-08 10 views
17

que tienen un atributo de fecha y hora en un registro:¿Por qué los ayudantes de fecha no funcionan en la consola de Rails?

1.9.3p194 :024> f.last_contact 
=> Thu, 11 Aug 2011 00:00:00 UTC +00:00 

Pero cuando intento time_ago_in_words en la consola, que no funciona:

> time_ago_in_words(f.last_contact) 
NoMethodError: undefined method `time_ago_in_words' for main:Object 

También probé distance_of_time_in_words el que los documentos dicen que debería funcionar con Time, Date & DateTime objects.

> to_time = Time.now 
=> 2012-09-08 12:22:16 -0500 
> distance_of_time_in_words(f.last_contact, to_time) 
NoMethodError: undefined method `distance_of_time_in_words' for main:Object 

¿Cuál es la causa de esto? ¿No debería Rails Console cargar todas las bibliotecas y dependencias necesarias para que todos los métodos de Rails funcionen?

Respuesta

54

Puede utilizar todos los ayudantes (built-in) y su propio objeto a través helper

helper.time_ago_in_words(1.hour.ago) 
=> "about 1 hour" 

o ayudantes de importación requerida

include ActionView::Helpers::DateHelper 
time_ago_in_words(1.hour.ago) 
=> "about 1 hour" 
+0

¡Perfecto! Gracias. – marcamillion

+0

un millón + 1 – thedanotto

5

Trate

helper.time_ago_in_words(...) 
helper.distance_of_time_in_words(...) 

Calling helper. parece dar acceso a cualquiera/todos los ayudantes definidas.

Más información en esta respuesta: How do I call controller/view methods from the console in Rails?

La razón, creo, que no se puede simplemente llamar al ayudante directamente es porque no están en el ámbito de donde está (en la consola), como se opone al código que se ejecuta dentro de una vista donde los ayudantes están dentro del alcance.

+0

'helper' trabajaban. ¡Gracias! – marcamillion

Cuestiones relacionadas