【问题标题】:How to customize devise reset password template?如何自定义设计重置密码模板?
【发布时间】:2016-07-07 13:24:15
【问题描述】:

我想使用默认模板发送重置密码邮件。我生成设计视图并重新启动服务器,但仍然失败 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>

怎么了?

更新路线.rb

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

我重写了设计用户方法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

【问题讨论】:

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

标签: ruby-on-rails devise


【解决方案1】:

根据this post,您可以将edit_password_url 更改为edit_password_path 并传递必要的数据。让我知道这是否有帮助。

如果没有,请提供更多信息,例如您使用的是哪个版本的 Devise、您的控制器的外观以及路由的输出是什么。

【讨论】:

    【解决方案2】:

    我认为您错过了路线,请添加到您的 router.rb 设计路线:

    devise_for :users
    

    PD:请在问题中显示您的routes.rb。

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 2021-02-01
      • 1970-01-01
      相关资源
      最近更新 更多