0

我一直在做Ruby in 100 minutes网站,在第 5 部分中遇到了问题。

我被要求创建一个good_morning可以打印出问候语的方法,例如 'Happy Monday, it's the 130 day of 2013'. 这是我目前的程序:

class PersonalChef
def good_morning
    date = Time.new
    today = Time("%A")
    day_of_year = Time.yday
    this_year = Time("%Y")
    puts "Happy " + "#{today}" + "! It is the " + "#{day_of_year}" + " day of the year" + "#{this_year}"
    return self
end
def make_toast(color)
    puts "Making your toast #{color}!"
    return self
end
def make_milkshake(flavor)
    puts "Don\'t worry boss, my #{flavor} milkshake brings all the boys to the yard!"
    return self
end
def make_eggs(quantity)
    puts "Making you  #{quantity} eggs sir!"
    return self
end
end

但是当我通过 irb (load 'personal_chef.rb', frank = PersonalChef.new, frank.make_milkshake('chocolate')等运行程序时,一切正常,直到我尝试输入frank.good_morningirb,这会给出以下错误消息

"NoMethodError: undefined method Time' for #<PersonalChef:0x00000001b61808> from personal_chef.rb:4:ingood_morning' from (irb):3 from /usr/bin/irb:12:in `'

我尝试用该Date方法代替,Time但仍然遇到同样的问题。

感谢您的阅读,并希望您即将提供有用的建议!如果有更多信息有助于解决此问题,请告诉我。

4

1 回答 1

3

代码行

today = Time("%A")

使用Time, class, 作为方法调用,它解释了错误。我看到您正在尝试从时间对象中提取日期名称和一年中的哪一天,但是将格式字符串传递给Time不是这样做的方法。

您正在寻找strftime方法。

例子:

>> today = Time.new()
=> 2013-06-19 21:58:34 -0700
>> today.strftime("%A")
=> "Wednesday"
>> today.strftime("%j")
=> "170"

星期三,一年中的第 170 天。

于 2013-06-20T04:56:39.720 回答