1. ホーム
  2. ruby-on-rails

[解決済み】helperとhelper_methodは何をするのですか?

2022-04-09 11:22:18

質問

helper_method は、コントローラのメソッドの一部または全部をビューで使用できるようにするという、単純なものです。

とは helper ? 逆に、ファイルやモジュールにヘルパーメソッドをインポートするのでしょうか? (多分、名前 helperhelper_method は似ています。それらはむしろ share_methods_with_viewimport_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