Ruby在100分钟内,good_morning方法

时间:2013-06-20 04:47:14

标签: ruby irb nomethoderror

我在100分钟的网站上一直在做 Ruby,并在第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_morning输入到irb中,这会产生以下错误消息

  

“NoMethodError:未定义的方法Time' for #<PersonalChef:0x00000001b61808> from personal_chef.rb:4:in good_morning”       来自(irb):3       来自/ usr / bin / irb:12:在''

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

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

1 个答案:

答案 0 :(得分: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天。