Web Marina

日々の業務や勉強などで得た知識をアウトプットしていきます。

【Rails】なんか変なとこのヘルパー読み込んでるんだけど??〜config.action_controller.include_all_helpers〜

f:id:song-of-life1352607:20170220105406j:plain

こんにちは、マリンです。

昨日こんなことがありました。

「staffのネームスペースでuserのhelper読み込んでるんです・・・」

その時に教えていただいた対処法をご紹介します。



概要

  1. app/helpers/user/pages_helper.rbにhogeと言うメソッドがあった。

  2. 同じ処理を行いたいのでapp/helpers/staff/pages_helper.rbにもhogeと言うメソッドを書いた。

  3. app/controllers/staff/staffs_controller.rbからネームスペースstaffのhogeを呼び出した。(つもり)

  4. なぜかネームスペースuserのhogeが呼ばれてしまう!?

こういった経緯で自己解決できずに相談しました。


原因

Railsのcontrollerでは、デフォルトで全部のhelperを読み込むようになっているそうです。

なので意図しないファイルを読み込んでいる場合は、

キチンとネームスペース内のものだけを読み込むように設定しないといけないとのこと。


対処方法

config/application.rbファイルに以下を記述します。

config.action_controller.include_all_helpers = false

これはデフォルトで全てのヘルパーを読み込むようになっているのを、

「やめて〜〜!!」

と言っています。

これでネームスペースに則ったヘルパーのみを読み込んでくれるようになるということです。


基礎を勉強するだけではわからないこと、

気付けなかったこと、ぶち当たらなかった壁をたくさん経験できて、

やはり一歩踏み出して良かったな。

と感じる今日この頃です。