我有一個客戶端的ID,名稱和電子郵件字段,我發送郵件使用ActionMailer與第三方SMTP。如何爲Actionmailer的電子郵件生成取消訂閱鏈接?
現在我希望客戶也有訂閱選項,所以我添加了「訂閱」列,默認值爲true。
現在如何產生的,可以在視圖中把郵件模板,所以當它在用戶點擊,訂閱值更改爲false,以便在未來的客戶端不」得到任何電子郵件中的鏈接?請注意,這些客戶是不是我的Rails應用程序的用戶,所以我不能用什麼在這裏建議Rails 3.2 ActionMailer handle unsubscribe link in emails
我發現這個鏈接how to generate link for unsubscribing from email過這看上去有益的,但我想可能是在3年內,我們也許就能得到更好的解決方案
這是我的完整代碼 -
#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
這裏是Clients_controller.rb文件
# 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
代碼工作正常現有記錄和退訂工作完美,我只是在創造新的客戶端有問題。 _form -
我已經退訂方法,我使用這個對象client_mailer.rb模板(!使用@client或只使用客戶端,兩者都工作)
EDIT 2使用@client。 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 %>
我在http://jsfiddle.net/icyborg7/dadGS/
感謝@Zeantsoi,我要通過代碼並執行它,看起來非常好。我會在24小時內回來接受答案 – iCyborg
很高興幫助! – zeantsoi
嗨@zeantsoi - 它看起來工作,但我得到模板丟失錯誤「缺少模板客戶端/取消訂閱」,所以我需要創建一個視圖或我可以做一些重定向?怎麼做。 – iCyborg