2011-11-06 12 views
8

Pracuję na silniku szyn i mam problem z pomocnikami.Pomocników w silniku Rails

Podobno jest to znany "problem", ale nie ma tam zbyt wielu rozwiązań. Problem polega na tym, że mam moduł AuthenticationHelper, do którego chcę mieć dostęp globalnie - ale to nie działa.

Mam read that you could add a few lines to your init.rb, ale wydaje się, że nie przynosi żadnego efektu.

Jaki jest najlepszy sposób na udostępnienie aplikacji w silniku?

EDYCJA: Naprawiono - Wystarczy wpisać kod (z linku) w engine.rb zamiast tego.

+1

można dostarczyć przykład kod wpisany w engine.rb? – westonplatter

Odpowiedz

10

Umieść ten kod w engine.rb:

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

Wewnątrz klasy Engine linjunhalida

+1

Dla potomności: nie jest to już konieczne - szyny teraz automatycznie ładują wszystkich pomocników – danielpcox

+3

Kolejowe szyny 3.2.12 ... Musiałem dodać to do metod dostępu w ApplicationHelper – Patm

2

Aby uzyskać dostęp do głównych pomocników aplikacji (ApplicationHelper) z widokiem silnikowych próbowałem to w ten sposób:

app/Pomocnicy/your_engine/application_helper.rb

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

to działa, ale raz, kiedy ponownie uruchomić serwer dev, rzuca mi uninitialized constant ActionView::Helpers::ApplicationHelper, ale nie mogę odtworzyć ten wyjątek.

EDIT

Usunięto tej include i uczynił to jedno:

lib/my_engine/engine.rb (jest wewnątrz silnika)

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

Musiałem zmienić linię .helper w Rails 4.2 na: ApplicationController.helper (:: ApplicationHelper) ... To mogło nawet zadziałać z twoim pierwszym rozwiązaniem. – Allen

Powiązane problemy