0

なぜこれがレールで機能しないのかわかりませんが、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

responseそれがローカル変数であると 100% 確信していますか? response表示されている動作を説明するメソッドの場合:ローカル変数は メソッドをresponseシャドウします。メソッドを呼び出したい場合は、引数リストまたはレシーバーを提供して、メソッドが必要な Ruby に明示的に伝える必要があります。 responseresponse

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