Mam metodę klasy w moim modelu i muszę uzyskać dostęp do metody z jednego z moich pomocników widoku. Obecnie włączam include TalkHelper
, ale nadal otrzymuję NoMethodError.Szyny 3 Zobacz metodę pomocnika w Modelu
Odpowiedz
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
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.
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:
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
powinno być 'module' (małe litery)? –
pewnie. naprawiony! (15 znaków) – railscard