Rails 3.2 ActionMailer обрабатывает ссылку для отмены подписки в электронных письмах - PullRequest
1 голос
/ 07 марта 2012

У меня есть список клиентов, которым я отправляю электронные письма с помощью почтовой программы ActionMailer.Я пытаюсь закодировать ссылку внизу каждого письма, чтобы клиент мог отписаться от рассылки.Пока у меня есть поле opted_out в моей базе данных клиентов, я просто не уверен, как правильно настроить маршрут и заставить его обновить правильное поле базы данных.Я хочу сделать так, чтобы пользователь мог просто щелкнуть ссылку и альт без подписки.

в blast_mailer.rb

  def mail_blast(customer, blast)
    @customer = customer
    @blast =blast
#what conditional statement goes here?
    mail(:to => @customer.email, :subject => @blast.subject)
    @blast.update_attributes(:last_sent => DateTime.now)
  end

в mail_blast.html.erb

 <div style="font-family:Helvetica; font-size:12pt; font-style:italic; width:500px; height:auto;">
        <img src="http://www.ratatouillecatering.com/<%=asset_path("emailheader.png")%>" alt="Menu" />
        <br />
        <br />
        Dear <%= @customer.fname %> <br />

        <%= raw(@blast.content) =%> <br />
#what goes here? a link_to what?
        <br />
    </div>

1 Ответ

3 голосов
/ 07 марта 2012

Я бы имел логическое поле в таблице пользователей, которое называется что-то вроде subscribed.Таким образом, вы можете просто выбрать всех пользователей, которые подписаны на электронную почту.

User.where(:subscribed => true)

Затем вы можете настроить действие unsubscribe в контроллере, который переворачивает логическое значение.

def unsubscribe
  User.find(params[:id]).update_attributes(:subscribed => false)
end

Все, что вам нужно сделать, - это передать ссылку на это действие в шаблоне электронной почты и передать идентификатор пользователя вместе с ним.Маршрут можно настроить так, чтобы URL выглядел как www.example.com/users/<id>/unsubscribe.

...