回答:
このメソッド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
include UserHelper
がHomeHelper
コントローラーではなくモジュール内にあることに気付きましたか?AFAIKは、ヘルパーモジュールをコントローラーに単に含めるだけでは、メソッドをビューと共有しません。