无法调用我的方法?

时间:2016-03-16 17:23:06

标签: ruby-on-rails ruby

我无法弄清楚为什么我收到此代码段的错误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)

1 个答案:

答案 0 :(得分:1)

很难解析您的方法的目的。对于此特定错误,您需要获取它,因为您的方法在调用它时需要参数。当你写

def test date
  ..
end

相当于写作

def test(date)
  ..
end

这意味着您的方法称为test,并采用名为date的参数。当您尝试将其称为test时,它会抱怨,因为您需要传递date参数。例如,有效的通话可能是test Date.todaytest(Date.today)