铁路,将助手传递给动作邮件

时间:2012-04-05 03:57:08

标签: ruby-on-rails actionmailer helper

我想知道如何让一个帮助文件的功能可用于动作邮件?我有一个名为UserMailer的动作邮件程序和一个名为sessions_helper.rb的帮助程序。我如何使方法可用于UserMailer?香港专业教育学院试过'包含',但它给出了以下错误

我试图获取的方法是“current_user”,我收到错误

undefined local variable or method `cookies' 

即时使用rails 3.2.1

感谢

3 个答案:

答案 0 :(得分:4)

你可以在这样的邮件中帮助你,

class Notifier < ActionMailer::Base

  add_template_helper(ApplicationHelper)

  #...

end

就current_user而言,我认为邮件不像ActionController那样有任何cookie的概念。作为一个更好的设计选择,我会让我的邮件独立于current_user。邮件程序不关心current_user是谁(类似于模型)。 对于这一点,邮寄者甚至不关心用户是谁,他们关心的是“电子邮件,主题和正文”。

因此,当调用邮件程序方法时,您可以向它们传递用户对象(它可以是current_user或任何其他身体),以便他们可以获取电子邮件,生成主题和正文。

答案 1 :(得分:2)

我必须使用以下内容将文件添加到config/initializers

class ActionMailer::Base
    helper MiscHelper
    helper ExtraMailHelper
end

我想你会根据需要为其他帮助者添加行,例如:

class ActionMailer::Base
    helper MiscHelper
    helper ExtraMailHelper
    helper SessionsHelper
end

答案 2 :(得分:1)

如果您想在特定的邮件程序中包含特定的帮助程序,可以使用它。

class RegistrationMailer < ActionMailer::Base

  include MyOwnHelper


  def method
  end
end