簡體   English   中英

如何自定義設計重置密碼模板?

[英]How to customize devise reset password template?

我想使用默認模板發送重置密碼郵件。 我生成設計視圖並重新啟動服務器,但是仍然失敗,並帶有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>

怎么了?

更新路由

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

我重寫了send_reset_password_instructions用戶方法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

根據這篇文章,您可以將edit_password_url更改為edit_password_path並傳遞必要的數據。 讓我知道這是否有所幫助。

如果不是,請提供更多信息,例如您使用的是哪個版本的Devise,控制器的外觀以及路線的輸出是什么。

我認為您缺少路由,請在router.rb添加路由:

devise_for :users

PD:請在問題中顯示您的routes.rb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM