2012-09-08 16 views
17

私は記録上datetime属性があります。私もドキュメントが動作するはずと言うdistance_of_time_in_wordsを試してみましたRailsコンソールで日付ヘルパーが動作しないのはなぜですか?

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

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

しかし、私は、コンソールでtime_ago_in_wordsをしようとすると、それは動作しませんが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 

この原因は何ですか。 Railsのすべてのメソッドが動作するために必要なすべてのライブラリと依存関係をコンソールがロードするべきではありませんか?

答えて

54

あなたはhelper`が働い `helperオブジェクト

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

またはインポートに必要なヘルパー

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

完璧!ありがとう。 – marcamillion

+0

100万+1 – thedanotto

5

helper.を呼び出す

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

を試してみてください任意の/すべての定義されたヘルパーにあなたのアクセスを与えているようです。この回答で

さらに詳しい情報:How do I call controller/view methods from the console in Rails?

彼らはあなたが(コンソールで)どこから範囲内にないだからあなただけの直接ヘルパーを呼び出すことができない理由は、私が思うに、である、などヘルパーが範囲内にあるビュー内で実行されているコードとは対照的です。

+0

を介してすべてのヘルパー(ビルトインと独自の)を使用することができます。ありがとう! – marcamillion

関連する問題