2011-09-18 17 views

Odpowiedz

9

Możesz umieścić pomocnika w swoim folderze lib i uwzględnić go w dowolnym miejscu. Jak to: lib/some_helper.rb

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

powinno być 'module' (małe litery)? –

+0

pewnie. naprawiony! (15 znaków) – railscard

6

Jeśli potrzebujesz pomocnika w metodzie klasy trzeba by extend go nie include go.

module TalkHelper 
    def woo; 'hoo' end 
end 

class MyClass 
    extend TalkHelper 

    def self.boo; woo end 
end 

MyClass.boo #=> 'hoo' 

Wystarczy być ostrożnym z pomocników poza kontekstem widzenia, jako pomocnicy mogą zależeć controller, lub coś innego z kontekstu wniosku, który nie będzie dostępny w modelu.

41

W modelu, można zrobić coś jak poniżej:

ApplicationController.helpers.your_helper_method 

LUB

YourController.helpers.your_helper_method 

The najlepszym rozwiązaniem byłaby ma swój kod, tak aby nie trzeba w ogóle wywoływać kod pomocnika widoku z modeli. To nie jest sposób RoR. Jak zauważają inni, można wyodrębnić kod pomocnika do folderu lib.

Zobacz to o więcej informacji:

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

+0

Skończyło się na tym, że podjąłem waszą radę i dokonałem refrakcji mojego kodu, tak że nie musiałem używać metody pomocniczej w modelu. – LanguagesNamedAfterCofee