2012-03-21 18 views
14

Ho costruito una gemma di rotaie che monta come un motore.Perché il motore montabile su Rails non carica correttamente i metodi di supporto?

Il motore ha lo scopo del proprio spazio dei nomi.

Nel motore, c'è un modulo MyEngine::ApplicationHelper che aggiunge un sacco di metodi vista helper.

Nel layout dell'applicazione, faccio riferimento ad alcuni di questi metodi.

Quando ho caricare qualsiasi delle pagine in modalità di sviluppo ottengo un NoMethodError, lamentando che il metodo (definito nella gemma ApplicationHelper) non esiste.

Una volta che modifico ApplicationController nel mio app, il problema si risolve.

Qualcosa mi dice che questo è giù per i recenti cambiamenti in auto-caricamento delle rotaie; Sto usando Rails 3.2.2

non posso per la vita di me capire perché questo non funziona correttamente se:/

+0

Sto affrontando lo stesso problema potrebbe essere problema perché (Modalità di sviluppo e instradamento più veloce) http://weblog.rubyonrails.org/2012/1/20/rails-3-2-0-faster-dev-mode-routing-explain-queries-tagged-logger-store/. Se trovi la soluzione gentilmente posta se ho trovato la soluzione che ti faccio sapere. – Amar

risposta

30

penso che le guide Rails ha la risposta here.

Per includere quel particolare aiuto dal motore nella vostra applicazione:

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

per includere tutti i collaboratori dal vostro motore nella vostra applicazione:

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

Come possiamo accedere agli helper delle app principali nella visualizzazione del motore? –

Problemi correlati