【发布时间】:2015-09-12 05:26:00
【问题描述】:
我正在使用 resque 发送电子邮件。如果我的邮件模板包含对实例变量的任何引用,则不会发送电子邮件。在我使用 resque 将其移动到后台作业之前,激活邮件程序正常工作。
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) %>
resque web中记录的错误是: 没有路由匹配 {:action=>"edit", :controller=>"account_activations", :email=>"user5@domain.com", :id=>nil} 缺少必需的键:[:id]
删除链接后会发送以下内容...
account_activation.text.erb
Hi,
Welcome. Click on the link below to activate your account:
路线正确:
edit_account_activation GET /account_activations/:id/edit(.:format) account_activations#edit
【问题讨论】:
-
您是否使用设备进行用户管理(如激活令牌)
-
错误在
<%= edit_account_activation_url(@new_user.activation_token, email: @new_user.email) %>行,发给你rake routes输出 -
路由是正确的,因为在我实施 resque 之前激活电子邮件工作正常。
-
从等式中取出链接。模板根本无法识别实例变量。
-
@user1567212 正如你所说的实例变量,我相信你没有将它存储在数据库中?但它是自动生成的。
标签: ruby-on-rails resque