我无法弄清楚为什么我收到此代码段的错误wrong number of arguments (0 for 1)
。
def test date
return_test = nil
return_date = nil
self.results.each do |result1|
if result1.parameter.id == 'T'
if result.date < date
return_test = result.value
return_date = result.date
if !return_date.nil? && result.date > return_date
return_date = result.date
return_test = result.value
end
end
end
end
return return_test
end
我忘了什么吗?
编辑:当我只测试代码时,它不会给我任何错误。只有我想使用测试方法。我必须在这里改变什么?
dig_k = 0
patient.labresults.each do |m|
unless patient.test.nil?
if patient.test.date(m.startdat)<2.8
patient.medications.each do |m2|
if m.medi.atc =~ /^C01AA05/
dig_k+=1
end
end
end
end
错误:
rb:311:in `test': wrong number of arguments (0 for 1) (ArgumentError)
答案 0 :(得分:1)
很难解析您的方法的目的。对于此特定错误,您需要获取它,因为您的方法在调用它时需要参数。当你写
def test date
..
end
相当于写作
def test(date)
..
end
这意味着您的方法称为test
,并采用名为date
的参数。当您尝试将其称为test
时,它会抱怨,因为您需要传递date
参数。例如,有效的通话可能是test Date.today
或test(Date.today)
。