person1,"> person1,"> person1," />

そこで私はparamsハッシュを作成し、値を割り当て、値を抽出しようとしました。

person1 = Person.new
person1.first = "Tim"
person1.last = "Happy"

person2 = Person.new
person2.first = "Zack"
person2.last = "Sad"

person3 = Person.new
person3.first = "Al"
person3.last = "Angry"

params = {:father => person1, :mother => person2, :child => person3} #params hash
puts params[:father][:first]

私はティムだけを印刷するようにしています。私はここで間違って何をしていますか?

1
代わりに何を印刷していますか?
追加された 著者 Ryan Bigg,
@RyanBigg印刷 "ティム"。
追加された 著者 Dave Newton,

1 答え

Person appears to be a class (not the same as a Hash), so it can't be accessed in that way unless the class has explicitly defined an [] accessor (as ActiveRecord::Base does, for example). What you want is:

puts params[:father].first

これは、2つの表記が交換可能であるJavaScriptなどの言語からの混乱を招くことは明らかです。

3
追加された
@ RyanBigg:あなたはそれがActiveRecordオブジェクトだと思いますか?私はどこにでもその兆候は見ません。さらに、OPが最初にこの問題に遭遇したという事実は、私にその反対を示唆している。
追加された 著者 Dan Tao,