Ruby 如何在Rails 5中使用Desive邮件程序中的助手方法?

Ruby 如何在Rails 5中使用Desive邮件程序中的助手方法?,ruby,devise,ruby-on-rails-5,Ruby,Devise,Ruby On Rails 5,在某个时候,我发现自己想在助手中加入一些逻辑,以便从我的邮件模板调用,但由于某种原因,我似乎无法让它工作 config/initializers/designe.rb: Devise.setup do |config| # ... config.mailer = 'UserMailer' # ... end class UserMailer < Devise::Mailer helper :users # Also tried: # helper UsersHel

在某个时候,我发现自己想在助手中加入一些逻辑,以便从我的邮件模板调用,但由于某种原因,我似乎无法让它工作

config/initializers/designe.rb

Devise.setup do |config|
  # ...
  config.mailer = 'UserMailer'
  # ...
end
class UserMailer < Devise::Mailer
  helper :users
  # Also tried:
  # helper UsersHelper
  # add_template_helper UsersHelper
  # helper :application
end
module UsersHelper
  def drupal_password_reset_path(user)
    # ...
  end
end
<!-- ... -->
  <p><%= link_to 'Change my password', drupal_password_reset_path(@resource) %></p>
<!-- ... -->
app/mailers/user\u mailer.rb

Devise.setup do |config|
  # ...
  config.mailer = 'UserMailer'
  # ...
end
class UserMailer < Devise::Mailer
  helper :users
  # Also tried:
  # helper UsersHelper
  # add_template_helper UsersHelper
  # helper :application
end
module UsersHelper
  def drupal_password_reset_path(user)
    # ...
  end
end
<!-- ... -->
  <p><%= link_to 'Change my password', drupal_password_reset_path(@resource) %></p>
<!-- ... -->
app/views/users/mailer/reset\u password\u instructions.html.erb

Devise.setup do |config|
  # ...
  config.mailer = 'UserMailer'
  # ...
end
class UserMailer < Devise::Mailer
  helper :users
  # Also tried:
  # helper UsersHelper
  # add_template_helper UsersHelper
  # helper :application
end
module UsersHelper
  def drupal_password_reset_path(user)
    # ...
  end
end
<!-- ... -->
  <p><%= link_to 'Change my password', drupal_password_reset_path(@resource) %></p>
<!-- ... -->

当它执行模板时,它找不到
drupal\u password\u reset\u path
方法

我从插入一些断点和绕一圈了解到: *当运行
helper:users
时,它正在加载正确的模块,并显然正确地将其添加到helpers中 *执行模板时,
UsersHelper
中的任何方法都不存在

肯定有什么明显的问题,但无论我怎么看,我自己都看不出来。

改为:

class UserMailer < Devise::Mailer
  helper UsersHelper
end
class UserMailer

此外,我不会使用名称中带有_path的任何helper方法,因为它可能与Rails URL helper冲突。尝试更改您的助手方法名称。

您是否尝试过包含usershelpert这就是
helper:users
应该实现的功能。但这是很久以前的事了,我甚至不记得这个问题是如何避免的。2018年,我曾说过这个问题是很久以前的事了,我不记得我们是如何解决的,现在是2019年,但我的印象是,如果我们这样命名一个方法,它可能是故意命名的,以匹配Rails helper方法,甚至可能是为了解决那些因为其他原因而不工作的人。。。