Frage

Ich baue eine App auf, die sich in Highlise und So-Far-So-Good integriert, wenn ich versuche, eine Person zu importieren Highrise::People Es spuckt einen riesigen Hash aus, der dem ähnelt:

[ ...,  #<Highrise::Person:0x1035084b8 @attributes={"contact_data"=>#<Highrise::Person::ContactData:0x1034f8b30 @attributes={"email_addresses"=>[], "addresses"=>[], "web_addresses"=>[], "phone_numbers"=>[], "twitter_accounts"=>[], "instant_messengers"=>[]}, @prefix_options={}>, "created_at"=>Sat Nov 28 05:38:26 UTC 2009, "title"=>"president", "updated_at"=>Sat Nov 28 05:38:27 UTC 2009, "background"=>"asdfasdfadsfas", "id"=>27569370, "owner_id"=>nil, "group_id"=>nil, "company_id"=>27569371, "last_name"=>"Doe", "author_id"=>192208, "visible_to"=>"Everyone", "first_name"=>"John"}, @prefix_options={}>, ... ]

Es sieht so direkt in jedem aus Highrise::Person ist ein @attributes Welches ist ein anderer Highrise::Person::ContactData, was selbst ein anderer ist @attributes mit Arrays mögen email_addresses[] und phone_numbers[] sowie einfache Schlüssel/Werte ...

Es tut mir leid, so verwirrend zu sein, was ich wissen möchte ist, wie ich das nur bekommen würde first_name von jeder Person aus einem Hash wie diesem?

Wahrscheinlich super einfach, ich bin nur verwirrt ...

Aktualisieren

Ich denke, ein besserer Weg, um dies zu formulieren, warum wird diese Arbeit angesichts des oben genannten Hashs nicht sein:

@people = Highrise::Person.find(:all)

for person in @people do
   person.attributes["first_name"]
end
War es hilfreich?

Lösung

Wenn deine Liste ist eine Reihe von Personen

yourlist.each do |person|
    puts person.attributes["first_name"]
end

Wenn Person hat einen attr_reader, das heißt.

Andere Tipps

Sie können es auch tun:

@people.each do |person|
    puts person.first_name
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top