在某些时候,我发现自己想在帮助程序中加入一些逻辑以从我的邮件模板中调用,但出于某种原因我似乎无法让它工作。
config/initializers/devise.rb
:
Devise.setup do |config|
# ...
config.mailer = 'UserMailer'
# ...
end
app/mailers/user_mailer.rb
:
class UserMailer < Devise::Mailer
helper :users
# Also tried:
# helper UsersHelper
# add_template_helper UsersHelper
# helper :application
end
app/helpers/users_helper.rb
:
module UsersHelper
def drupal_password_reset_path(user)
# ...
end
end
app/views/users/mailer/reset_password_instructions.html.erb
:
<!-- ... -->
<p><%= link_to 'Change my password', drupal_password_reset_path(@resource) %></p>
<!-- ... -->
当它执行模板时,找不到drupal_password_reset_path
方法。
我通过插入一些断点和绕过一点点知道的是:* 当 helper :users
运行时,它正在加载正确的模块并显然将其正确添加到 helpers* 执行模板时,UsersHelper
中的方法没有存在。
肯定有什么地方明显不对,但我自己怎么看都看不出来。
更改为:
class UserMailer < Devise::Mailer
helper UsersHelper
end
此外,我不会使用名称中带有 _path 的任何辅助方法,因为它可能与 Rails URL 辅助方法冲突。尝试更改您的辅助方法名称。
我是一名优秀的程序员,十分优秀!