Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails设计Gem,从控制器指定电子邮件模板_Ruby On Rails_Devise - Fatal编程技术网

Ruby on rails RubyonRails设计Gem,从控制器指定电子邮件模板

Ruby on rails RubyonRails设计Gem,从控制器指定电子邮件模板,ruby-on-rails,devise,Ruby On Rails,Devise,我有一个从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

我有一个从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.designe\u mailer.reset\u password\u指令(@user.deliver)
发送重置密码指令,但它采用默认的电子邮件模板,我不想更改。我需要创建另一个模板并指定如何使用它

然后创建您自己的邮件程序。有关详细信息,请参阅。一旦您在控制器中有了新邮件程序,而不是:

@user.devise_mailer.reset_password_instructions(@user).deliver
你可以这样做:

YourMailer.reset_password_instructions(@user).deliver
您可能希望在邮件中重复使用部分Desive:请查看Desive源:

您可以尝试的另一件事是重新定义designe模板,方法是将名为
app/views/designe/mailer/reset\u password\u instructions.html.erb
的文件放在应用程序目录中。当然,您也可以基于设计源来实现: