在某些时候,我发现自己想要在帮助器中添加一些逻辑来从我的邮件模板中调用,但出于某种原因,我似乎无法让它工作。
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
时,它正在加载正确的模块并显然正确地将其添加到帮助程序
*执行模板时,UsersHelper
中的方法的 none 存在。
肯定有一些明显错误的事情,但无论我多么努力,我都无法自己看到它。
答案 0 :(得分:0)
更改为:
class UserMailer < Devise::Mailer
helper UsersHelper
end
此外,我不会在名称中使用带有_path的任何帮助器方法,因为它可能与Rails URL帮助器冲突。尝试更改您的助手方法名称。