将现有变量设置为自身的第一个元素

时间:2012-12-09 21:45:25

标签: ruby-on-rails ruby cucumber

我不确定为什么这不适用于rails,但它在IRB中有效。

我正在做类似的事情:

response = response.first

response是一个包含哈希值的数组。

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

e.g:

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

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

e.g:

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

然后,response设置为nil

为什么行为不同?

1 个答案:

答案 0 :(得分:1)

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

response = response().first
# or
response = self.response.first