решаемая. См. Примечания 2 и 3.
Полагаю, я просто не понимаю классы в рельсах 3 + ruby 1.9.2 ...
Мы используем actionmailer вместе с delayedjob. Все работает нормально, КРОМЕ я просто пытаюсь раскрасить некоторые телефонные номера и пытаюсь поставить простой метод pretty_phone (для форматирования номера телефона) КУДА-ТО, который не выдает ошибку:
Class#sample_email failed with NoMethodError: undefined method `pretty_phone'
Я пробовал это в model_helper.rb, application_helper.rb и в классе, поскольку, как мне кажется, это модель для нашей электронной почты foo_mailer.rb (FooMailer
Наш проект настроен так:
app
controllers
widgets_controller.rb
helpers
application_helper.rb
widgets_helper.rb
mailer
foo_mailer.rb ***
models
widget.rb
views
widget
(usual edit,show, etc views)
foo_mailer
sample_email.html.haml ***
Это простой метод, который я пытаюсь добавить:
# num is a string, always in format 12223334444 we want (222)333-4444
def pretty_phone(num)
return "(" + num[1,3] + ")" + num[4,3] + "-" + num[7,4]
end
foo_mailer.rb очень прост:
class FooMailer < ActionMailer::Base
helper :application **** THIS ALMOST MAKES IT WORK SEE NOTE 2
include ApplicationHelper **** AND THIS ALSO IS REQUIRED NOTE 3
default :from => "Support <support@mydomain.com>"
def sample_email(thewidget)
@widget = thewidget
send_to = @widget.contact_email
if !send_to.blank?
mail :to => send_to,
:subject => "alert regarding #{pretty_phone(@widget.userphone)}"
end
end
end
и вниз по нашему мнению для электронной почты мы также используем #{pretty_phone(@widget.userphone)}
Мне бы очень хотелось понять, почему я не могу поместить этого помощника в application_helper или даже в foo_mailer.rb и заставить его работать - и куда он ДОЛЖЕН идти?
(В настоящее время у меня есть помощник в application_help.rb, и ВСЕ наши представления erb виджетов могут использовать его нормально ... это просто представление электронной почты и / или файл класса foo_mailer.rb, который выдает ошибку.)
Примечание 2
добавив helper :application
вверху foo_mailer.rb СЕЙЧАС вспомогательный метод pretty_phone () в application_help.rb работает в VIEWs foo_mailer, но НЕ в самом foo_mailer.rb. Так, например, где я хочу, чтобы pretty_phone () в строке темы письма, он не будет работать. Но в реальных электронных письмах (представлениях) это работает.
Мне это кажется странным - какие-нибудь предложения?
ПРИМЕЧАНИЕ 3
Добавление 'include' И 'helper' - это то, что было нужно.