helper_method
は簡単です。ビューでコントローラーのメソッドの一部またはすべてを使用できるようにします。
helper
とは何ですか?それは逆ですか?つまり、ヘルパーメソッドをファイルまたはモジュールにインポートしますか? (おそらく名前helper
とhelper_method
は似ています。代わりにshare_methods_with_view
とimport_methods_from_view
である可能性があります)
メソッドhelper_method
は、コントローラーで定義されたいくつかのメソッドを明示的に共有して、ビューで使用できるようにすることです。これは、コントローラーとヘルパー/ビューの両方からアクセスする必要があるメソッドに使用されます(コントローラーでは標準のヘルパーメソッドは使用できません)。例えば一般的なユースケース:
#application_controller.rb
def current_user
@current_user ||= User.find_by_id!(session[:user_id])
end
helper_method :current_user
一方、helper
メソッドは、コントローラー(および継承されたコントローラー)によって提供されるビューにヘルパー全体をインポートするためのものです。これが意味することは
# application_controller.rb
helper :all
Rails> 3.1の場合
# application.rb
config.action_controller.include_all_helpers = true
# This is the default anyway, but worth knowing how to turn it off
すべてのヘルパーモジュールをすべてのビューで使用できるようにします(少なくともapplication_controllerから継承するすべてのコントローラーに対して)。
# home_controller.rb
helper UserHelper
userHelperメソッドを、ホームコントローラーのアクションのビューで使用できるようにします。これは以下と同じです:
# HomeHelper
include UserHelper