2013-12-22 119 views
0

我使用的设计为我的用户帐户,我会得到所有的确认,用户密码说明等; 但我有一个条件,如果用户帐户被锁定(在我的方案中状态为false),他必须通过电子邮件获得重置密码链接。这个锁定过程在其他控制器中编码,所以我们不能使用设计助手。Unlock_instructions电子邮件

我的控制器的代码:

DEF send_instruction

一个= []

if @answer1 
    a << '1' 
end 
if @answer2 
    a << '2' 
end 
if @answer3 
    a << '3' 
end 

if a.size <= 1 

    SiteMailer.unlock_user(current_user).deliver 

    current_user.update_attribute(:status,false) 

    destroy_user_session_path(current_user) 

    flash[:error]= "Your account is locked" 

    redirect_to new_user_session_path 

else 

    redirect_to user_dashboard_path 

end 

寄件人/ site_mailer.rb:

类SiteMailer <的ActionMailer: :乙ASE

包括设计::邮件程序::助手

缺省: “[email protected]” DEF unlock_user(用户)

@user = user 

@url = "pwd_edit" 

mail(to: @user.email, subject: 'Your account has been locked') 

在邮件视图:

嗨,

您的帐户已被锁定。编辑简介: “我的链接(edit_user_password_url(CURRENT_USER)”

当我经历这个过程中,我得到 “找不到路线” 错误而我的路线是。正确的。请帮助我。

回答

0

这是因为没有current_user是当时在场,你应该试试这个,而不是

edit_user_password_url(@user) 
+0

如果我想使用像devise这样的重置密码令牌,有没有其他选择,或者我们可以在我的控制器方法中自定义? –

+0

明白了..我刚刚删除了我的SiteMailer并添加了以下步骤:** current_user.send_reset_password_instructions ** –