Ruby on Rails Devise Gem,从控制器指定电子邮件模板

时间:2012-05-24 09:08:45

标签: ruby-on-rails devise

我有一个继承自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 发送重置密码说明,但它需要默认的电子邮件模板,我不想更改。我需要创建另一个模板,并以某种方式指定使用它

1 个答案:

答案 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