【发布时间】: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