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/

Antworten auf die Frage(1)

Ihre Antwort auf die Frage