我有一个继承自ApplicationController的控制器 我发送重置密码insturctions的地方,有没有办法指定模板?
@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 发送重置密码说明,但它需要默认的电子邮件模板,我不想更改。我需要创建另一个模板,并以某种方式指定使用它
答案 0 :(得分:0)
然后创建自己的邮件程序。有关详细信息,请参阅http://guides.rubyonrails.org/action_mailer_basics.html。一旦你有一个新的邮件程序,在控制器中,而不是:
@user.devise_mailer.reset_password_instructions(@user).deliver
你会做类似的事情:
YourMailer.reset_password_instructions(@user).deliver
您可能希望在邮件程序中重复使用Devise的部分内容:查看设计源代码: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