0

我不确定为什么这在 Rails 中不起作用,但它在 IRB 中起作用。

我正在做类似的事情:

response = response.first

response是一个带有哈希的数组。

在 irb 中,当试图模拟这个时,它工作正常。

例如:

>> a = [{'a'=>3}]
=> [{"a"=>3}]    
>> a = a.first   
=> {"a"=>3}      

但是在调试器模式下,在黄瓜中(在我的步骤定义中),我在执行上述语句时得到了这个:

例如:

(rdb:1) response = response.first
NoMethodError Exception: undefined method `first' for nil:NilClass
(rdb:1) response
nil

然后,response设置为nil.

为什么行为不一样?

4

1 回答 1

1

你 100% 确定这response是一个局部变量吗?如果response是一种可以解释您所看到的行为的方法:局部变量 response会影响方法 response。如果要调用该response方法,则需要通过提供参数列表或接收器来明确告诉 Ruby 想要该方法:

response = response().first
# or
response = self.response.first
于 2012-12-09T22:41:14.533 回答