I am using resque to send emails. The emails do not send if my mailer template contains any references to instance variables.
users_controller.rb
def create
@user = User.new(user_params)
if @user.save
Resque.enqueue(SendActivationEmail, @user.id)
flash[:info] = "Please check your email to activate your account."
redirect_to root_url
else
render 'new'
end
end
send_activation_email.rb
class SendActivationEmail
@queue = :email_queue
def self.perform(user_id)
user = User.find(user_id)
UserMailer.account_activation(user).deliver_now
end
end
user_mailer.rb
class UserMailer < ApplicationMailer
def account_activation(user)
@new_user = user
mail to: user.email, subject: "Account activation"
end
end
account_activation.text.erb
Hi,
Welcome. Click on the link below to activate your account:
<%= edit_account_activation_url(@new_user.activation_token, email: @new_user.email) %>
The error recorded in resque web is: No route matches {:action=>"edit", :controller=>"account_activations", :email=>"user5@domain.com", :id=>nil} missing required keys: [:id]
The following will send when the link is removed...
account_activation.text.erb
Hi,
Welcome. Click on the link below to activate your account:
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire