我有一些ruby代码:
def createCal(cal)
mod = @on + @off #line creating error.
@daycount = 0
cal
end这将生成以下错误: NoMethodError at /calendar undefined method `+‘for nil:NilClass file: main.rb location: createCal line: 83
我在Sinatra中使用它,所以我可以将@on和@off打印到网页上,我可以确认它们实际上是被加载了值。我还在我的haml模板中做了一个'@ooo = @on + @ off‘,结果是7,这是意料之中的,因为on是4,off是3。
有什么想法吗?
更新:
下面是我处理“开”和“关”的方法
post '/calendar' do
@on = params["on"]
@off = params["off"]
@date = params["date"]
a = Doer.new
@var = a.makeDate(@date)
@on = @on.to_i
@off = @off.to_i
@ooo = @on + @off
@cal = a.makeCal(@var)
haml :feeling
end发布于 2011-09-07 04:47:05
您将访问两个不同的实例变量:
@on in post是Sinatra实例的实例变量。@on in createCal是Doer实例的实例变量。要像您希望的那样使用@on和@off,您需要将它们更改为传递给createCal方法的参数。如下所示:
class Doer
def createCal(cal, on, off)
mod = on + off
# more code...
cal
end
end
post '/calendar' do
a = Doer.new
date = a.makeDate params['date']
@cal = a.makeCal date, params['on'], params['off']
haml :some_template
end发布于 2011-09-07 04:31:58
您的实例变量可能不在该方法的作用域中。尝试以下操作来测试此理论:
def createCal(cal, on, off, daycount)
mod = on + off #line creating error.
daycount = 0
cal
end并使用以下命令调用它(在/calendar块中):
createCal(cal, @on, @off, @daycount)https://stackoverflow.com/questions/7325726
复制相似问题