0

我有一个我想在我的邮件助手中访问的自定义模块,但我不知道如何包含它。

我的自定义模块lib/workday.rb

module Workday
  def next_workday(date = Date.today)
    ...
  end
  ...
end

我尝试在我的 MailHelper 中使用:

module MailHelper
  include Workday

  def next_workday(date = Date.today)
    Workday.next_workday(date)
  end
  ...
end

当尝试使用助手时,我得到了这个:

undefined method `next_workday' for Workday:Module
/www/xxx/app/helpers/mail_helper.rb:4:in `next_workday'

当手动将模块包含在控制台中时,它可以直接通过帮助程序正常工作:

> include Workday
=> Object
> Workday.next_workday
=> Fri, 04 Jan 2013 
> helpers.next_workday
=> Fri, 04 Jan 2013
4

1 回答 1

1

如果您包含 a Module,则这些方法将可作为实例方法访问。如果您尝试next_workday直接通过模块访问该方法,则该方法必须定义为“类方法”(带有self.)。

如果你使用,你MailHelper应该工作:

module MailHelper
  include Workday
end

无需定义next_workday方法,MailHelper因为它只是委托给Workday#next_workday反正。如果您将您MailHelper的课程包含在课程中,则可以使用以下方法访问该方法next_workday

于 2013-01-03T13:46:59.990 回答