2012-03-23 2 views
4

text_field (선택 사항)를 추가하여 초대 이메일에 선택적 메시지를 추가하고 싶습니다. 따라서 메시지에 아무것도 입력하지 않으면 invitation_instructions.html.erb의 표준 메시지는 text_field 메시지를 보내야합니다.Invise 선택적 맞춤 메시지

어떻게해야합니까?

답변

5

이 작업을 수행하려면 이메일을 보내지 말고 직접 우편물을 사용할 수 있습니다. 여기

그것을 수행하는 방법입니다 :

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은 (유증> = 3.1과 호환) devise_invitable의 최신 버전에 존재합니다.

우리는 본질적으로 모든 장치와 초대장 프로세스를 모두 건너 뛰고 우리 자신의 우편물을 사용하고 있습니다. Google은 콘텐츠를 매개 변수로 사용하여 이메일 본문으로 전송합니다. 자리 표시자를 실제 값으로 대체하기까지합니다.

이 솔루션을 사용하면 원하는 모든 이메일에 유연성을 줄 수 있습니다. 원하는 경우 추적 픽셀을 추가 할 수도 있습니다.

+0

3 일 후에 동일한 링크로 맞춤 초대 알림을 보내고 싶습니다. 이전의 devise 3.1 버전에서는 문제가 전혀 없었습니다. 그러나 지금까지 보았을 때, 이제는 새로운 토큰과 알림 링크를 생성하거나 (나중에는 원하지 않는) 새로운 토큰을 생성하거나 나중에 사용할 수 있도록 raw_invitation_token을 저장해야합니다 (새 토큰 시스템에 대한 전체적인 생각을 무시 함).). 이 딜레마를 해결하는 방법에 대한 아이디어가 있습니까? – wdspkr

관련 문제