2010-01-20 2 views
0

je ne trouvaille sur certains modèles et a obtenu lerails comment afficher les données ou récupérer les valeurs trouvent après

suivant
>> @addy 
=> [#<Address id: 3, street: "Some Street", houseNumber: nil, created_at: "2010-01-20 06:09:52", updated_at: "2010-01-20 06:09:52", address_id: 16>] 

Maintenant, comment puis-je récupérer les valeurs? Et si je veux la rue?

@addy.street ne fonctionne pas ne netiher @addy[:street]

si j'avais une liste de choses @ Addy et je voulais faire une boucle à travers eux pour montrer la rue pour chacun?

Répondre

4

@addy.first.street devrait fonctionner, car il s'agit d'une liste de classes d'adresses contenant un seul membre.

Pour afficher chaque rue pour plus dans la liste des adresses:

@addy.each do |address| 
    puts address.street 
end 

ou

list_of_streets = @addy.map { |address| address.street } 

Edit:
Lorsque vous avez un problème d'identification quelle classe vous avez, vérifiez toujours object.class. Lorsque vous utilisez juste object dans IRB, alors vous voyez la sortie de object.inspect, qui n'a pas à afficher le nom de la classe ou même peut usurper certaines informations. Vous pouvez également appeler le object.methods, object.public_methods.

Et rappelez-vous que dans Ruby une classe est aussi une instance (de classe Class). Vous pouvez appeler @addr.methods pour obtenir des méthodes d'instance et @addr.class.methods pour obtenir des méthodes de classe.

Edit2:
Dans Rails #find peut prendre le premier symbole de paramètre, et si vous passez :first de :last, vous obtiendrez un seul objet. Idem si vous passez un entier (id de l'objet récupéré). Dans d'autres cas, vous obtenez la liste comme résultat, même si elle ne contient qu'un seul objet.

Questions connexes