2011-11-06 11 views
8

Sto lavorando su un motore di rotaie e ho un problema con gli helper.Helpers in Rails engine

Apparentemente questo è un "problema" noto ma non ci sono molte soluzioni là fuori. Il problema è che ho un AuthenticationHelper a cui voglio accedere globalmente, ma non funziona.

Ho read that you could add a few lines to your init.rb ma non sembra avere alcun effetto.

Qualche idea sul modo migliore per rendere disponibile un'applicazione in un motore?

MODIFICA: risolto: basta inserire il codice (dal collegamento) nello engine.rb.

+1

Si può fornire un esempio di codice che hai inserito in engine.rb? – westonplatter

risposta

10

inserire questo codice in engine.rb:

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

nella classe Motore linjunhalida

+1

Per i posteri: questo non è più necessario - i binari ora caricano automaticamente tutti gli helper – danielpcox

+3

Running rails 3.2.12 ... dovuto aggiungere questo per accedere ai metodi all'interno di ApplicationHelper – Patm

2

Per accedere principali aiutanti di app (ApplicationHelper) dalle viste del motore ho provato includere questo:

app/aiutanti/your_engine/application_helper.rb

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

funziona, ma una volta, quando ho rimesso in moto del server dev, si getta mi uninitialized constant ActionView::Helpers::ApplicationHelper, ma non posso riprodurre questa eccezione.

EDIT

rimosso questo include e reso questo:

lib/my_engine/engine.rb (è il motore interno)

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

Ho dovuto modificare la riga .helper in Rails 4.2 a questo: ApplicationController.helper (:: ApplicationHelper) ... Potrebbe persino funzionare con la prima soluzione. – Allen

Problemi correlati