我在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
,但仍遇到同样的问题。
感谢您的阅读,并希望您即将获得有用的建议!如果有更多信息有助于解决此问题,请告知我们。
答案 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天。