передача дополнительных параметров экземпляра в шаблон электронной почты devise_invitable

Я переопределяю контроллер devise_invitable и в своем методе создания хочу передать дополнительные значения шаблону электронной почты invitations_instructions. Например, имя группы. Кто-нибудь добился успеха в этом, если да, пожалуйста, дайте мне несколько подсказок здесь.

что я пробовал...

мой @group в моем Users::InvitesController < Devise::InvitationsController create method не определен в email шаблоне.

пытался добавить :skip_invitation => true в моем create и затем отправить письмо вручную, как...

self.resource = resource_class.invite!(params[resource_name], current_inviter, :skip_invitation => true)
 ::Devise.mailer.invitation_instructions(self.resource).deliver

но это дает неправильное количество аргументов, так что я что-то неправильно читаю из документации.

UPDATE - возможное решение

Единственный способ кажется таким, но мне интересно, есть ли лучший способ, который использует предоставленные шаблоны и создает mailer

в моем /app/controller/users/InvitesController#create (наследует от InvitationsController)

self.resource = resource_class.invite!(params[resource_name], current_inviter) do |u|
  u.skip_invitation = true
end
UserMailer.invitation_instructions(self.resource, current_inviter, @object).deliver

где UserMailer - это мой общий (стандартный) мейлер действий, и происходит что-то вроде...

def invitation_instructions(resource, inviter, object)
    @resource = resource
    @object = object
    @inviter = inviter

    mail(:to => resource.email, :subject => 'New invitation from ' + inviter.first_name)
  end
15
задан Edward Thomson 15 March 2012 в 18:02
поделиться