4
我想添加一个可选的text_field以将可选消息添加到邀请电子邮件。因此,如果没有任何东西放入消息,则来自invitation_instructions.html.erb的标准消息应该发送,否则应该发送text_field的消息。设计可选的自定义消息
如何在设计中做到这一点?
我想添加一个可选的text_field以将可选消息添加到邀请电子邮件。因此,如果没有任何东西放入消息,则来自invitation_instructions.html.erb的标准消息应该发送,否则应该发送text_field的消息。设计可选的自定义消息
如何在设计中做到这一点?
要做到这一点,您可以使用自己的邮件程序,而不是为您设计电子邮件。
下面是如何做到这一点:
class User < ActiveRecord::Base
attr_reader :raw_invitation_token
end
class InvitationsController < Devise::InvitationsController
def create
@from = params[:from]
@subject = params[:invite_subject]
@content = params[:invite_content]
@user = User.invite!(params[:user], current_user) do |u|
u.skip_invitation = true
end
@user.deliver_invitation
email = NotificationMailer.invite_message(@user, @from, @subject, @content)
end
end
class NotificationMailer < ActionMailer::Base
def invite_message(user, venue, from, subject, content)
@user = user
@token = user.raw_invitation_token
invitation_link = accept_user_invitation_url(:invitation_token => @token)
mail(:from => from, :bcc => from, :to => @user.email, :subject => subject) do |format|
content = content.gsub '{{first_name}}', user.first_name
content = content.gsub '{{last_name}}', user.first_name
content = content.gsub '{{full_name}}', user.full_name
content = content.gsub('{{invitation_link}}', invitation_link)
format.text do
render :text => content
end
end
end
end
的raw_invitation_token
仅在devise_invitable的较新版本(具有色器件> = 3.1兼容)是否存在。
我们实质上是一起跳过设计邀请过程并使用我们自己的邮件程序。我们将内容作为参数并将其作为电子邮件的主体发送。我们甚至用占位符取代实际值。
这个解决方案将给你很多的灵活性,无论你想用电子邮件。如果你愿意的话,你甚至可以添加一个跟踪像素。
我想在三天后发送带有相同链接的自定义邀请提醒。先前的设计3.1版本完全没有问题。但据我所知,我现在必须为提醒生成一个新的令牌和一个新的链接(我不想),或者将raw_invitation_token存储起来供以后使用(这违背了新的令牌系统的整个概念)。任何想法如何解决这个困境? – wdspkr 2013-10-10 14:33:57