您好我必须将当前用户访问我的动作邮件程序,但我收到了以下错误
undefined local variable or method `current_user' for #<WelcomeMailer:0xa9e6b230>
使用this link我正在使用应用程序助手来获取当前用户。 这是我的 WelcomeMailer
class WelcomeMailer < ActionMailer::Base
layout 'mail_layout'
def send_welcome_email
usr = find_current_logged_in_user
Rails.logger.info("GET_CURRENT_USER_FROM_Helper-->#{usr}")
end
end
我的应用程序助手如下
def find_current_logged_in_user
#@current_user ||= User.find_by_remember_token(cookies[:remember_token])
# @current_user ||= session[:current_user_id] && User.find_by_id(session[:current_user_id])
Rails.logger.info("current_user---> #{current_user}")
current_user
end
我也尝试过会话和cookie。那么我该如何解决这个错误,或者是否有其他方法来访问动作邮件程序中的当前用户。
我正在使用Rails 3.2.14 and ruby ruby 2.1.0
答案 0 :(得分:13)
请勿尝试从邮件程序中访问current_user
。相反,将用户传递给邮件程序方法。例如,
class WelcomeMailer < ActionMailer::Base
def welcome_email(user)
mail(:to => user.email, :subject => 'Welcome')
end
end
要在控制器中使用它,您可以访问current_user
:
WelcomeMailer.welcome_email(current_user).deliver
从模型中:
class User < ActiveRecord::Base
after_create :send_welcome_email
def send_welcome_email
WelcomeMailer.welcome_email(self).deliver
end
end