0

我有一个从 ApplicationController 继承的控制器,我在其中发送重置密码指令,有没有办法指定模板?

@user=User.find_by_email(email);
if @user.nil?
  render :status=>404, :json=>{:message=>"User not found or email format is invalid."}
  return
else
  @user.devise_mailer.reset_password_instructions(@user).deliver
  render :status=>200, :json=>{:message=>"Reset password instructions have been sent."}
end

正如您在上面的代码段中看到的,@user.devise_mailer.reset_password_instructions(@user).deliver 发送重置密码说明,但它需要默认电子邮件模板,我不想更改。我需要创建另一个模板并以某种方式指定使用它

4

1 回答 1

0

然后创建您自己的邮件程序。有关详细信息,请参阅http://guides.rubyonrails.org/action_mailer_basics.html。一旦你有了一个新的邮件,在控制器中,而不是:

@user.devise_mailer.reset_password_instructions(@user).deliver

你会做类似的事情:

YourMailer.reset_password_instructions(@user).deliver

您可能希望在您的邮件中重用设计的部分:查看设计源:https ://github.com/plataformatec/devise/blob/master/lib/devise/mailers/helpers.rb

app/views/devise/mailer/reset_password_instructions.html.erb您可以尝试的另一件事是通过在应用程序目录中放置一个名为的文件来重新定义设计模板。当然,您也可以将您的实现基于设计源:https ://github.com/plataformatec/devise/blob/master/app/views/devise/mailer/reset_password_instructions.html.erb

于 2012-05-24T11:02:50.013 回答