2016-07-07 106 views
0

我想使用默认模板发送重置密码邮件。我生成制定的意见并重新启动服务器,但仍然未能与undefined method 'edit_password_url'如何自定义设计重置密码模板?

reset_password_instruction.html.erb

<p><%= t(:hello).capitalize %> <%= @resource.email %>!</p> 

<p><%= t '.request_reset_link_msg' %></p> 

<p><%= link_to t('.password_change_link'), edit_password_url(@resource, reset_password_token: @token, config: message['client-config'].to_s, redirect_url: message['redirect-url'].to_s).html_safe %></p> 

<p><%= t '.ignore_mail_msg' %></p> 
<p><%= t '.no_changes_msg' %></p> 

有什么不对?

UPD的routes.rb

mount_devise_token_auth_for 'User', at: 'users', controllers: { ... passwords: 'devise_overrides/passwords' }

我overrided设计用户的方法send_reset_password_instructions

def send_reset_password_instructions(opts=nil) 
    token = set_reset_password_token 

    opts ||= {} 

    # fall back to "default" config name 
    opts[:client_config] ||= "default" 
    url = edit_password_url(self, reset_password_token: token, config: opts['client-config'], redirect_url: opts['redirect-url'] 

    opts[:url] = url 


    # This is devise send method 
    # send_devise_notification(:reset_password_instructions, token, opts) 
    # This is mine 
    MyMailer.forgot(opts).deliver_now 
    token 
    end 
+0

添加您的路线文件和相关资源的模型(例如用户)。如果没有设计路线和模型配置,这些都不会起作用。 – Matt

+0

请见我的更新。 – dlx

回答

0

根据this post你可以改变edit_password_urledit_password_path并把它传递必要的数据。让我知道这是否有帮助。

如果不是,请提供更多信息,例如您正在使用Devise的版本,控制器的外观以及路径的输出。

+0

同样的错误'edit_password_path'未定义( – dlx

0

我想你错过了路线,添加到您的router.rb色器件路线:

devise_for :users 

PD:请出示在这个问题你routes.rb