Stan Blog

學習過程中的一些記錄

[Rails] 預設不載入所有 helper

在 Rails 裡,我們如果在 UsersHelper 裡定義一個 method

ItemsController 的 view 裡也可以使用,Rails 預設已經幫我們載入了所有 helper

不過這樣在某些情境下,可能會造成困擾

例如有好幾個 helper,裡面都有相同名稱的 method

這樣在使用的時候,就沒辦法指定所要使用的是哪隻 helper

除非在 method name 加上一些 prefix

調整 helper 載入設定

如果遇到上述情境,可以在 Rails 的 config 檔裡面

將預設載入所有 helper 的設定調整為 false

# config/application.rb

config.action_controller.include_all_helpers = false

這樣一來 Admin::UsersController 的 view 就只有 include Admin::UsersHelper

不過 ApplicationHelperAdmin::BaseHelper 還是全域載入的

所以如果有繼承 Admin::BaseController 的 controller,那它的 view 就可以使用 Admin::BaseHelper 的 method

另外,如果我們定義了一個 LayoutHelper,它是沒有被 include 的

可以將它 include 在 ApplicationHelper 內,這樣 LayoutHelper 也會變成全域的 helper


Ref:

Comments

comments powered by Disqus