web-dev-qa-db-ja.com

helperとhelper_methodは何をしますか?

helper_methodは簡単です。ビューでコントローラーのメソッドの一部またはすべてを使用できるようにします。

helperとは何ですか?それは逆ですか?つまり、ヘルパーメソッドをファイルまたはモジュールにインポートしますか? (おそらく名前helperhelper_methodは似ています。代わりにshare_methods_with_viewimport_methods_from_viewである可能性があります)

参照

195

メソッド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
283
Jeremy