Rails 3 View вспомогательный метод в Model
У меня есть метод класса в моей модели, и мне нужно получить доступ к методу от одного из моих помощников вида. В настоящее время я в том числе include TalkHelper
, но я все еще получаю NoMethodError.
3 ответа
Вы можете поместить помощника в вашу папку lib и включить их где угодно. Вот так: lib/some_helper.rb
module SomeHelper
def somedef
#your code there
end
end
В вашей модели вы можете сделать что-то вроде следующего:
ApplicationController.helpers.your_helper_method
ИЛИ ЖЕ
YourController.helpers.your_helper_method
Лучшее решение - это рефакторинг вашего кода, чтобы вам вообще не приходилось вызывать вспомогательный код view из моделей. Это не путь RoR. Как отмечают другие, вы можете извлечь вспомогательный код в папку lib.
Смотрите это для получения дополнительной информации:
Если вам нужен помощник в методе класса, вам нужно extend
не это include
Это.
module TalkHelper
def woo; 'hoo' end
end
class MyClass
extend TalkHelper
def self.boo; woo end
end
MyClass.boo #=> 'hoo'
Просто будьте осторожны с помощниками вне контекста представления, поскольку помощники могут зависеть от controller
или что-то еще из контекста запроса, который не будет доступен в вашей модели.