Я хочу использовать методы, которые я определил app/helpers/annotations_helper.rb
в моих представлениях ReportMailer ( app/views/report_mailer/usage_report.text.html.erb
). Как мне это сделать?
Основываясь на этом руководстве, кажется, что add_template_helper(helper_module)
метод может делать то, что я хочу, но я не могу понять, как его использовать.
(Кстати, есть ли причина, по которой вы получаете доступ к другому набору помощников в представлениях почтовой программы? Это довольно раздражает.)
ruby-on-rails
Том Леман
источник
источник
Ответы:
В классе почтовой программы, который вы используете для управления своей электронной почтой:
источник
В Rails 3 просто используйте вспомогательный метод в верхней части вашего класса ActionMailer:
Я только что прошел в блоке, так как мне нужно только в одном Mailer:
(не забудьте установить config.action_mailer.default_url_options.)
(и если вы используете url_for, обязательно укажите: only_path => false)
источник
helper :'namespace/mail'
helper 'namespace/mail'
Для всех почтовых программ в Rails 3 (настройка помощника application):
источник
helper :application
отлично работает в Rails 4.2.1.devise
.helper :application
не работает в этом случае.include ApplicationHelper
работаетДля Ruby on Rails 4 мне пришлось сделать 2 вещи:
(1) Как уже сказал герцог , если помощник, которого вы хотите добавить, это,
UsersHelper
например, добавитьк производному
ActionMailer
классу (например,app/mailers/user_mailer.rb
)(2) После этого я получил новую ошибку:
Чтобы это исправить, добавьте строку
к каждому из
config/environments/*.rb
файлов. Дляconfig/environments/production.rb
, заменитеlocalhost
его более подходящим хостом для URL-адресов, сгенерированных вспомогательным рабочимВ: Для # 2, почему почтовому представлению нужна эта информация, а обычным - нет?
A: Поскольку обычные представления не должны знать
host
, так как все сгенерированные ссылки обслуживаются с хоста, на который они ссылаются. Ссылки, отображаемые в электронных письмах, не обслуживаются с одного хоста (если вы не ссылаетесь наhotmail.com
илиgmail.com
и т. Д.)источник
User::ComposedHelper
Вы можете просто добавить в свой почтовик
или какой-нибудь помощник вам нужен
источник
(Это старый вопрос, но Rails эволюционировал, поэтому я делюсь тем, что работает для меня в Rails 5.2.)
Как правило, вы можете использовать пользовательский помощник представления при отображении строки темы электронного письма, а также HTML. В случае, когда помощник вида находится в app / helpers / application_helper.rb следующим образом:
Я могу создать динамическую строку темы письма и шаблон, которые оба используют помощника, но мне нужно указать Rails явно использовать ApplicationHelper в apps / mailer / user_mailer.rb двумя различными способами, как вы можете видеть во второй и третьей строках здесь :
Я должен отметить, что эти две строки работают одинаково хорошо, поэтому выберите одну или другую:
FWIW, шаблон электронной почты в app / views / user_mailer / party_thanks.html.erb выглядит так:
И контроллер app / controller / party_controller.rb выглядит следующим образом
Я должен согласиться с OP (@Tom Lehman) и @gabeodess, что все это выглядит довольно запутанным, учитывая https://guides.rubyonrails.org/action_mailer_basics.html#using-action-mailer-helpers, так что, возможно, я что-то упустил .. ,
источник
в моем случае для Rails4 я делаю так:
и
так что вам не нужно указывать
add_template_helper
везде.источник