我想向刚刚注册的用户发送感谢您的电子邮件,我想我已经把一切都搞定了但不知道怎么也无法在user_mailer.rb中获得注册用户的电子邮件ID。我正在使用devise并使用current_user.email或@ current_user.email给出错误。这是我的代码
#/app/mailers/user_mailer.rb
def welcome (current_user)
mail(
:from => "myid@gmail.com",
:to => current_user.email,
:subject => "Thank you for signing"
)
end
#/应用/控制器/ registration_controller.rb
def create
build_resource
if resource.valid?
begin
resource.transaction do
resource.save!
end
UserMailer.welcome(@current_user).deliver
end
end
错误我正在
undefined method `email' for nil:NilClass
编辑 - 好吧我终于能够解决它,在控制器中我使用UserMailer.welcome(@current_user).deliver而不是UserMailer.welcome(@user).deliver,现在它是工作,感谢所有帮助过的人
答案 0 :(得分:3)
答案 1 :(得分:2)
如果覆盖设计控制器,请使用“resource”方法获取当前用户:
def create
build_resource(sign_up_params)
if resource.save
UserMailer.welcome(resource).deliver
# some other actions...
end
end
另外,您可能应该将电子邮件发送代码放在模型回调而不是控制器上吗?
答案 2 :(得分:1)
尝试使用
@user = User.new(params[:user])
if @user.save
set_flash_message :notice, :signed_up if is_navigational_format?
sign_up(:user, @user)
UserMailer.welcome(@user).deliver
else
clean_up_passwords @user
end