2011-09-18 7 views

risposta

9

È possibile posizionare l'helper nella cartella lib e includerli in qualsiasi modo. Ti piace questa: lib/some_helper.rb

module SomeHelper 
    def somedef 
    #your code there 
    end 
end 
+0

dovrebbe essere 'module' (minuscolo)? –

+0

sicuro. fisso! (15 simboli) – railscard

6

Se è necessario l'helper in un metodo di classe avresti bisogno di extend, non include esso.

module TalkHelper 
    def woo; 'hoo' end 
end 

class MyClass 
    extend TalkHelper 

    def self.boo; woo end 
end 

MyClass.boo #=> 'hoo' 

Basta essere attenti con aiutanti al di fuori del contesto di visualizzazione, come aiutanti possono dipendere controller, o qualcosa d'altro dal contesto di una richiesta, che non saranno disponibili nel modello.

41

nel modello, si può fare qualcosa di simile al seguente:

ApplicationController.helpers.your_helper_method 

O

YourController.helpers.your_helper_method 

La migliore soluzione è quella di refactoring del codice in modo che non è necessario chiamare il codice helper vista dai modelli. Non è il modo RoR. Come altri sottolineano, puoi estrarre il codice helper nella cartella lib.

Vedere questo per ulteriori informazioni:

http://railscasts.com/episodes/132-helpers-outside-views

+0

Alla fine ho seguito il tuo consiglio e ho rifraturato il mio codice in modo da non dover utilizzare il metodo helper nel modello. – LanguagesNamedAfterCofee