Estoy anulando el controlador devise_invitable
y en mi método de creación me gustaría pasar valores adicionales a la plantilla de correo electrónico invitations_instructions
. Por ejemplo, nombre de grupo, alguien ha tenido éxito en esto, de ser así, por favor dame algunas pistas aquí.pase vars de instancia adicionales a devise_invitable plantilla de correo electrónico
lo que he intentado ...
mi @group
en mi Users::InvitesController < Devise::InvitationsController
método de crear no está definida en la plantilla de correo electrónico.
intentado añadir :skip_invitation => true
en mi crear y luego enviar el correo electrónico de forma manual como ...
self.resource = resource_class.invite!(params[resource_name], current_inviter, :skip_invitation => true)
::Devise.mailer.invitation_instructions(self.resource).deliver
pero esto le da un número incorrecto de argumentos por lo que no es algo que yo no estoy leyendo correctamente de la documentación.
ACTUALIZACIÓN - posible solución
La única manera parece ser esto, pero tengo curiosidad si hay una manera mejor que utiliza las plantillas e idear anuncio publicitario
en mis /app/controller/users/InvitesController#create
(hereda de 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
donde UserMailer
es mi general (estándar) anuncio publicitario de la acción y es algo como ...
def invitation_instructions(resource, inviter, object)
@resource = resource
@object = object
@inviter = inviter
mail(:to => resource.email, :subject => 'New invitation from ' + inviter.first_name)
end
Su solución ofrecida en la actualización funciona. Pero no se siente muy limpio. También disfrutaría de una solución más limpia. Una forma podría ser parchear devise_invitable y redefinir 'invitar!' Para aceptar más opciones. – Guillaume
@ andrew-lak Por favor extraiga su actualización en respuesta y acéptelo. –