Разработать Приглашаемое дополнительное пользовательское сообщение - PullRequest
4 голосов
/ 23 марта 2012

Я хотел бы добавить дополнительное текстовое поле, чтобы добавить дополнительное сообщение в электронное письмо с приглашением Таким образом, если в сообщение ничего не вставлено, то должно быть отправлено стандартное сообщение по приглашению.

Как это сделать в устройстве?

1 Ответ

5 голосов
/ 08 октября 2013

Для этого вы можете использовать свою собственную почтовую программу вместо того, чтобы придумывать для вас почтовые вещи.

Вот как это сделать:

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 (совместимо с devise> = 3.1).

По сути, мы все вместе пропускаем процесс разработки приглашения и используем нашу собственную почтовую программу. Мы берем контент в качестве параметра и отправляем его как тело письма. Мы даже заменяем заполнители их фактическими значениями.

Это решение обеспечит вам большую гибкость при отправке электронных писем. Вы даже можете добавить к нему пиксель отслеживания, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...