【发布时间】:2023-04-05 18:05:01
【问题描述】:
在某些时候,我发现自己想在帮助程序中添加一些逻辑,以便从我的邮件模板中调用,但由于某种原因,我似乎无法让它工作。
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 中的方法无存在。
肯定有什么明显的地方不对劲,但我怎么看都看不出来。
【问题讨论】:
-
你试过包含UsersHelper
-
这就是
helper :users应该实现的目标。不过这是很久以前的事了,我什至不记得这个问题是如何避免的。
标签: ruby devise ruby-on-rails-5