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