Ответ 1
Существует более чистый способ достижения решения, которое вы ищете, и использовать разработать собственные процедуры для переопределения шаблонов почтовых отправлений.
Сначала создайте настраиваемую почтовую программу, которая простирается от Devise::Mailer
:
class MyMailer < Devise::Mailer
helper :application # gives access to all helpers defined within `application_helper`.
include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url`
default template_path: 'devise/mailer' # to make sure that your mailer uses the devise views
end
Затем в config/initializers/devise.rb
установите config.mailer
в "MyMailer"
. Это позволит вам переопределить ЛЮБОЕ электронное письмо, в котором вы будете отправлять и настраивать по своему вкусу.
Затем для вас вы можете переопределить invitable_instructions
следующим образом:
def invitation_instructions(record, token, opts={})
# Determine a way to set object -- likely through a query of some type
@object = get_object_for(record)
opts[:subject] = 'New invitation from ' + inviter.first_name
super
end
Основная точка привязки из вашего примера заключалась в передаче дополнительных данных для установки @group/@object
. Чтобы сделать это, я бы лично пошел с каким-то типом запроса в почтовом ящике (не чистым, но он инкапсулирован и, следовательно, менее "магическим" ), чтобы получить эти объекты.
Кроме того, если вы хотите использовать собственные шаблоны электронной почты вместо devise, вы можете просто добавить их в каталог app/views/my_mailer/
, и разработчик предпочтет электронные письма в этом каталоге по электронной почте из драгоценного камня.