我事先表示歉意。我是编程新手。我遇到了错误
main:Object的未定义方法“ even_or_odd”(NoMethodError)
当尝试在rails中运行以下代码时。 任何帮助表示赞赏。
class Test
attr_accessor :number
def initialize(number)
self.number = number
end
def even_or_odd(number)
self.number = number
if number % 2 == 0
puts "Even"
else
puts "Odd"
end
end
end
Test.assert_equals(even_or_odd(2), "Even")
答案 0 :(得分:2)
您已将该类中的所有方法定义为实例方法,应在该类的实例(因此可能是Test.find(4))上而不是在类本身(仅是Test)上调用。所以这样的事情应该起作用:
Test.new(4).even_or_odd(4) => true
但是..我们用参数布置方法的方式意味着我们正在检查参数是否为偶数/奇数,而不是测试对象的数字。所以:
Test.new(4).even_or_odd(5)
将测试的'number'属性重置为5,然后检查该数字。我猜您想检查Test实例的number属性,而不是要提供的参数,因此请尝试:
class Test
def initialize(number)
@number = number
end
def even_or_odd
if @number % 2 == 0
puts "Even"
else
puts "Odd"
end
end
end
这将使您执行:
Test.new(4).even_or_odd
我删除了attr:accessor位,使事情更加明显,但是如果您不希望每次都调用@number,请随意添加。