我想添加一个可选的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
Run Code Online (Sandbox Code Playgroud)
在raw_invitation_token只存在于devise_invitable的较新版本(具有色器件> = 3.1兼容).
我们基本上是一起跳过设计邀请流程并使用我们自己的邮件程序.我们将内容作为参数并将其作为电子邮件的正文发送.我们甚至用实际值替换占位符.
此解决方案将为您提供电子邮件所需的灵活性.如果您愿意,甚至可以为其添加跟踪像素.
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |