So generieren Sie einen Abmelde-Link für E-Mails von Actionmailer?
Ich habe eine Tabelle KUNDEN mit ID-, Namens- und E-Mail-Feldern und sende ihnen E-Mails mit ActionMailer mit SMTP von Drittanbietern.
Jetzt möchte ich, dass die Clients auch eine Abonnementoption haben, also habe ich die Spalte "Abonnement" mit dem Standardwert "true" hinzugefügt.
Wie kann man nun einen Link erstellen, der in die Mailer-Vorlage "Ansichten" eingefügt werden kann. Wenn der Benutzer darauf klickt, ändert sich der Abonnementwert in "Falsch", sodass der Client in Zukunft keine E-Mails mehr erhält. Beachten Sie, dass diese Clients nicht meine Rails-App-Benutzer sind, sodass ich die hier vorgeschlagenen Clients nicht verwenden kannRails 3.2 ActionMailer behandelt das Abbestellen von Links in E-Mails
Ich habe diesen Link gefundenWie erstelle ich einen Link zum Abbestellen von E-Mails? Auch das sah hilfreich aus, aber ich dachte, in 3 Jahren hätten wir vielleicht eine bessere Lösung
Hier ist mein vollständiger Code -
#client.rb
attr_accessible :name, :company, :email
belongs_to :user
has_many :email_ids
has_many :emails, :through => :email_ids
before_create :add_unsubscribe_hash
private
def add_unsubscribe_hash
self.unsubscribe_hash = SecureRandom.hex
end
Hier ist die Clients_controller.rb-Datei
# clients_controller.rb
def new
@client = Client.new
respond_to do |format|
format.html
format.json { render json: @client }
format.js
end
end
def create
@client = current_user.clients.new(params[:client])
respond_to do |format|
if @client.save
@clients = current_user.clientss.all
format.html { redirect_to @client }
format.json { render json: @client }
format.js
else
@clients = current_user.clients.all
format.html { render action: "new" }
format.json { render json: @client.errors, status: :error }
format.js
end
end
end
def unsubscribe
@client = Client.find_by_unsubscribe_hash(params[:unsubscribe_hash])
@client.update_attribute(:subscription, false)
end
Der Code funktioniert einwandfrei für vorhandene Datensätze und die Abmeldung funktioniert einwandfrei. Ich habe nur Probleme beim Erstellen neuer Kunden.
Ich habe @client in der Abmeldemethode verwendet, da ich dieses Objekt in der Vorlage client_mailer.rb verwende (mit @client oder einfach mit client, beide funktionieren!)
EDIT 2 - _form.html.erb
<%= simple_form_for(@client, :html => {class: 'form-horizontal'}) do |f| %>
<%= f.input :name, :label => "Full Name" %>
<%= f.input :company %>
<%= f.input :email %>
<%= f.button :submit, class: 'btn btn-success' %>
<% end %>
Ich habe den kompletten Trackstack bei kopierthttp://jsfiddle.net/icyborg7/dadGS/