2014-12-06 105 views
1

我正在使用我的Rails 4应用程序的设计。Devise Rails&Admin_Mailer

我在user.rb模型如下:

def send_admin_mail 
    AdminMailer.new_user_waiting_for_approval(self).deliver 
end 

def send_user_welcome_mail 
    AdminMailer.new_user_waiting_for_access(user).deliver 
end 

第一种方法向我发送电子邮件时,一个新的用户注册。目的是为第二种方法发送欢迎电子邮件给新用户。第一种方法有效。第二个提出'no_method_error'的问题(在我的回调控制器中未定义的方法电子邮件)。

我的回调控制器有以下几点:

def linkedin 
    @user = User.find_for_linkedin_oauth(request.env["omniauth.auth"]) 
    if @user.persisted? 
    @user.send_admin_mail 
    @user.send_user_welcome_mail 

    redirect_to root_path, :event => :authentication 
    # sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated 
    # set_flash_message(:notice, :success, :kind => "LinkedIn") if is_navigational_format? 
    else 
    session["devise.linkedin_data"] = request.env["omniauth.auth"] 
    redirect_to root_path 
    end 
end 

我admin_mailer有:

def new_user_waiting_for_approval(user) 
    @user = user 
    mail(to: "[email protected]", from: "[email protected]", 
    subject: "Registration Request #{user.first_name} #{user.last_name} <#{user.email}>") 
end 

def new_user_waiting_for_access(user) 
    @user = user 
    mail(to: user.email, from: "[email protected]", subject: "Welcome to Co #{user.first_name}") 
end 

我不知道我是否需要CURRENT_USER更换用户利用色器件的方法也许在第二个方法中,是否需要在{}和/或“”上使用user.email的变体?我尝试了几种不同的变化和组合,但没有取得任何成功。

谢谢你的帮助。

+0

你能后你得到 – pshoukry 2014-12-06 22:46:25

回答

0
def send_user_welcome_mail 
    AdminMailer.new_user_waiting_for_access(user).deliver 
end 

def send_user_welcome_mail 
    AdminMailer.new_user_waiting_for_access(self).deliver 
end 

用户替换 - >自

+0

喜确切的错误跟踪,感谢您的建议。当我尝试它时,出现以下错误:ActionView :: Template :: Error(未定义的局部变量或方法'用户'为#<#:0x007f60578287f0>)。日志在我的回调控制器中引用此行:@ user.send_user_welcome_mail – Mel 2014-12-06 23:08:19

+0

为什么您在视图中使用用户?它应该是@user。 – pshoukry 2014-12-06 23:14:02

+0

就是这样 - 谢谢。我很想@ – Mel 2014-12-06 23:17:30