Rails – 共通ヘルパーの置き場所

概要

複数のコントローラーやビューで共通に利用したいヘルパーの置き場所について。単純なヘルパーの場合、以下の場所が候補になる。

  • app/helpers下のビューに対応した***_helper.rbに記述
  • app/helpers/application_helper.rb内に記述
  • app/controllers/concerns下のモジュールファイルに記述(コントローラー

依存関係を持つような場合はconcernsに置くのがよいようだが、単純なヘルパーの場合はビューとの関連によってapplication_helper.rbに統一するのが簡明かもしれない。

コントローラーに対応したhelper

ヘルパーファイルにヘルパーを記述してapplication_controllerでインクルードすると、コントローラーやビューでこれを使うことができる。

以下はPagesコントローラーの例で、コントローラーとビューの両方でfoo_helperの実行が確認できる。

定義・設定

helpersディレクトリー内にあるコントローラー_helper.rbの中でヘルパーを定義する。

app/helpers/pages_helper.rb

application_controllerでモジュールをインクルード。

app/controllers/application_controller.rb

利用

コントローラーで利用可能。

app/controllers/pages_controller.rb

ビューでも利用可能。

app/views/pages/helper_test.html.erb

application_helper

application_helperもヘルパーファイルの1つで、Railsにより準備される。これを上と同じくapplication_controllerでインクルードして、アプリケーション共通のヘルパーとして使える。

定義・設定

helpersディレクトリー内にあるapplication_helper.rbの中でヘルパーを定義する。

app/helpers/application_helper.rb

application_controllerでモジュールをインクルード。

app/controllers/application_controller.rb

利用

コントローラーで利用可能。

app/controllers/pages_controller.rb

ビューでも利用可能。

app/views/pages/helper_test.html.erb

concerns

app/controllers/concernsにはコントローラー間で共通のモジュール、app/models/concernsはモデル間で共通のモジュールのファイルを配置する。

コントローラーなどでインクルードしてもビューではこれらのモジュールは使えない。

定義・設定

concernsディレクトリー下にモジュールファイルを作成して、その中にヘルパーを書く。

app/controller/concerns/common_module.rb

application_controllerでモジュールをインクルード。

app/controllers/application_controller.rb

利用

コントローラーで利用可能。

app/controllers/pages_controller.rb

しかしビューでは使えない。

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です