web-dev-qa-db-ja.com

プレーンオールドRails(非Rails)でRubyヘルパー "distance_of_time_in_words"を使用するにはどうすればよいですか?

Railsには、distance_of_time_in_wordsを使用して時間の距離を単語に変換するヘルパーがあります

この関数を取得するためにirbプロンプトでRubyを使用している場合、何を含める必要がありますか?

私は試した require 'action_view'しかし、それは役に立ちませんでした。

私も試しましたrequire 'active_support/core_ext'しかし、それも役に立ちませんでした。

31
Michael Durrant

これは機能するはずです:

require 'action_view'

include ActionView::Helpers::DateHelper

これらの両方は、いくつかの理由で実行する必要があります。まず、ライブラリを要求して、そのモジュールとメソッドを呼び出せるようにする必要があります。これが、require 'action_view'を実行する必要がある理由です。

次に、distance_of_time_in_wordsはモジュールであり、それ自体では独立していないため、クラスに含める必要があります。次に、そのクラスのインスタンスでdistance_of_time_in_wordsを呼び出すことでアクセスできます。

コンソールを使用しているときは、すでにObjectクラスのインスタンスが実行されています。これは、irbコンソールでselfを呼び出すことで確認できます。 include ActionView::Helpers::DateHelperを呼び出すと、Objectクラスの任意のインスタンスにこれらのメソッドが含まれます。これはirbコンソールの暗黙のレシーバーであるため、コンソールにdistance_of_time_in_wordsを保存して、必要なものを取得できます。

お役に立てば幸いです。

ジョー

55
TheDelChop