2011-11-06 89 views
8

我正在使用Rails引擎,並且對助手有問題。Rails引擎中的助手

顯然這是一個已知的「問題」,但沒有太多的解決方案。問題是我有一個我想全局訪問的AuthenticationHelper - 但它不起作用。

我已經read that you could add a few lines to your init.rb但它似乎沒有任何效果。

任何想法在引擎中提供應用程序的最佳方式是什麼?

編輯:修正了它 - 只是把代碼(從鏈接)在engine.rb而不是。

+1

你能提供的一個例子你放在engine.rb中的代碼? – westonplatter

回答

10

將這個代碼engine.rb:

config.to_prepare do 
    ApplicationController.helper(MyEngineHelper) 
end 
+0

內部類引擎 linjunhalida

+1

後代:這不再是必要的 - 軌道現在自動加載所有幫助程序 – danielpcox

+3

運行軌3.2.12 ...必須添加此訪問ApplicationHelper內的方法 – Patm

2

從發動機的觀點我試圖訪問主要的應用程序助手(ApplicationHelper)包括這樣的:

應用程序/傭工/ your_engine/application_helper.rb

module YourEngine 
    module ApplicationHelper 
    include ActionView::Helpers::ApplicationHelper 
    end 
end 

它的工作原理,但有一次,當我重新啓動dev的服務器,它拋出我uninitialized constant ActionView::Helpers::ApplicationHelper,但我不能重現此例外。

編輯

刪除此include這使一個:

的lib/my_engine/engine.rb(它的內部引擎)

module MyEngine 
    class Engine < ::Rails::Engine 
    isolate_namespace MyEngine 
    config.to_prepare do 
     ApplicationController.helper(ActionView::Helpers::ApplicationHelper) 
    end 
    end 
end 
+1

我必須將Rails 4.2中的.helper行更改爲:ApplicationController.helper(:: ApplicationHelper)......這甚至可能適用於您的第一個解決方案。 – Allen