Rails 4未定义的局部变量

时间:2014-04-30 04:56:17

标签: ruby-on-rails ruby

我有一个模型方法,它在.each块之前定义了一个局部变量。然后该块迭代一个数组并根据某些内容是否为true来增加计数。有问题的变量是true_count。我得到一个"未定义的局部变量" true_count的错误,我无法弄清楚。我对Rails和编码也比较陌生。

project.rb:

def displaycount
  d = [self.backlog_display, self.committed_display, self.qa_display, self.started_display, self.completed_display, self.accepted_display]
  true_count == 0
    d.each do |d|
      if d == true
        true_count += 1
      end
    end
end

导致此错误的原因是什么?

4 个答案:

答案 0 :(得分:3)

您正在进行比较,而不是使用变量进行定义...

true_count == 0必须为true_count = 0

答案 1 :(得分:1)

问题出在这一行

true_count == 0

应为true_count = 0

<强>为什么吗

== 用于比较,例如

if a == 0

puts 'a is zero'

else

puts 'a is not Zero'

end

=仅用于指定值ta变量。例如

a=0 #Here is defined as Zero

希望有所帮助!

答案 2 :(得分:0)

从以下位置更改此行:

true_count == 0

为:

true_count = 0

您需要分配变量,而不是检查它是否等于零。

答案 3 :(得分:0)

def display_count
  [ backlog_display, 
    committed_display, 
    qa_display, 
    started_display, 
    completed_display, 
    accepted_display].inject(0) {|result,display| result + ( display ? 1 : 0 )  }
end