Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 红宝石中的命名者_Ruby_Sinatra_Nomethoderror - Fatal编程技术网

Ruby 红宝石中的命名者

Ruby 红宝石中的命名者,ruby,sinatra,nomethoderror,Ruby,Sinatra,Nomethoderror,我有一些ruby代码: def createCal(cal) mod = @on + @off #line creating error. @daycount = 0 cal end 这将生成以下错误:nil:NilClass文件:main.rb位置:createCal行:83 我在Sinatra中使用它,所以我可以在网页上打印@on和@off,我可以确认它们实际上加载了值。我还在haml模板中做了一个'@ooo=@on+@off',结果是7,这是意料

我有一些ruby代码:

def createCal(cal)
    mod = @on + @off #line creating error.
    @daycount = 0       
    cal
  end
这将生成以下错误:nil:NilClass文件:main.rb位置:createCal行: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

您的实例变量可能不在该方法的范围内。尝试以下方法来检验这一理论:

def createCal(cal, on, off, daycount)
  mod = on + off #line creating error.
  daycount = 0       
  cal
end
并使用以下命令调用它(在/日历块中):


您正在访问两个不同的实例变量:

  • post
    中的
    是Sinatra实例的实例变量
  • createCal
    中的
    @on
    是来自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

它使我想起了我的朋友。我想知道为什么我不能在Rails中获取属性。现在我对Sinatra不太了解,但是
on
off
应该使用
on
off
而不是
的方法调用吗?因为当你的变量/属性返回
nil
时,看起来你的变量/属性没有得到正确的处理。我不认为这是一个完全正确的问题。我认为它们不应该是方法。它们只是我从表单中提取的变量。我之前就试过这么做。然而,我又试了一次,只是为了确保我没有遗漏什么。同样的错误、行号等再次出现。你能在github/上发布所有相关代码,并在gist/pastie中提供一个你正在测试的示例url,我会检查它。对不起,我是说什么url在本地,如/calendar?on=5&off=200等/calendar?on=3&off=4&date=9/12/2011之类。检查完gist后,这绝对是一个范围问题。看看哪个有效。看看我对你的post/calendar块做了什么。mod创建了我稍后使用的模数值。是的,我现在看到了。更新了我的例子,更好地暗示了挥手的过程。谢谢。这起作用了,我实际上清理了我的/calendar,以便在我的makeCal方法中调用makeDate方法。我不知道这是好是坏。那好多了。用你的代码从别人的角度考虑一下:我只需要一个从X到Y的日历,告诉我如何给你发送这些日期,我不在乎它在里面是如何工作的。
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