2012-05-24 57 views
0

我有一個控制器,它繼承自ApplicationController 我發送重置密碼insturctions,有沒有什麼方法來指定模板?Ruby on Rails設計Gem,從控制器指定電子郵件模板

@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

然後創建您自己的郵件程序。詳情請參閱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