2012-03-21 36 views
14

我已經構建了一個安裝爲引擎的軌道寶石。爲什麼我的Rails可掛載引擎無法正確加載幫助程序方法?

引擎的作用域是它自己的命名空間。

在引擎中,有一個MyEngine::ApplicationHelper模塊,它添加了一堆視圖幫助器方法。

在我的應用程序佈局中,我提到了其中的一些方法。

當我第一次在開發模式下加載任何頁面時,我得到一個NoMethodError,抱怨方法(在創業板的ApplicationHelper中定義)不存在。

一旦我在我的應用程序中編輯ApplicationController,問題就會自行糾正。

有些東西告訴我這是Rails自動加載的最新變化;我使用Rails 3.2.2

我不能爲我的生活工作這是爲什麼不工作雖然正常:/

+0

我面臨同樣的問題可能是問題,因爲(更快的開發模式和路由)http://weblog.rubyonrails.org/2012/1/20/rails-3-2-0-faster-dev-mode-routing-explain-queries-tagged-logger-store/。如果你找到解決方法,請善意發佈,如果我找到解決方案,我讓你知道。 – Amar 2012-04-24 11:40:40

回答

30

我認爲Rails的導遊有答案here

要包括你的引擎,特定助手在你的應用程序:

class ApplicationController < ActionController::Base 
    helper MyEngine::ApplicationHelper 
end 

爲了在你的應用程序從發動機的所有助手:

class ApplicationController < ActionController::Base 
    helper MyEngine::Engine.helpers 
end 
+0

我們如何訪問引擎視圖中的主應用程序助手? – 2017-11-29 10:22:50