2011-11-06 12 views
8

Estoy trabajando en un motor de rieles y tengo un problema con los ayudantes.Helpers in Rails motor

Aparentemente, este es un "problema" conocido, pero no hay muchas soluciones por ahí. El problema es que tengo un AuthenticationHelper al que quiero acceder globalmente, pero no funciona.

Tengo read that you could add a few lines to your init.rb pero no parece tener ningún efecto.

¿Alguna idea de cuál es la mejor manera de hacer que una aplicación esté disponible en un motor?

EDITAR: Se corrigió- Simplemente coloque el código (del enlace) en el engine.rb en su lugar.

+1

¿Puede dar un ejemplo de la código que puso en engine.rb? – westonplatter

Respuesta

10

poner este código en engine.rb:

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

dentro de la clase Motor linjunhalida

+1

Para la posteridad: esto ya no es necesario: los rieles ahora cargan automáticamente todos los ayudantes – danielpcox

+3

Carriles de carrera 3.2.12 ... Tuvieron que agregar esto para acceder a los métodos dentro de ApplicationHelper – Patm

2

Para acceder a aplicaciones principales ayudantes (ApplicationHelper) a partir de las opiniones de los motores que he intentado incluir lo siguiente:

app/helpers/your_engine/application_helper.rb

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

funciona, pero una vez, cuando me reinicia el servidor dev, me lanza uninitialized constant ActionView::Helpers::ApplicationHelper, pero no puedo reproducir esta excepción

EDITAR

eliminado esta include e hizo éste:

lib/my_engine/engine.rb (que de motor en el interior)

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

Tuve que cambiar la línea .helper en Rails 4.2 a esto: ApplicationController.helper (:: ApplicationHelper) ... Eso incluso podría haber funcionado con tu primera solución. – Allen