Yo.

Tu as une relation belongs_to :type dans ton objet dépense, cela veut
dire que la relation est sur depense.type et non pas depense.types. Si
une dépense a un seul type, c'est du belongs_to et la relation est au
singulier, sinon c'est du has_many ou has_and_belongs_to_many avec une
table de relation intermédiaire, et là effectivement le nom de la
relation est au pluriel !

Si dans ta vue tu veux afficher le nom du type de ta dépense et tu
n'es pas sur que celui ci est défini a chaque fois (il est peut être
nil sur certains enregistrements), tu peux t'amuser à tester que
depense à un type avec un bloc if ou encore faire des choses plus
rapides du style :
<%= depense.type.try(:name) || "N.C." %> (qui affichera N.C. si
depense n'a pas de type) ou encore mieux utiliser la méthode delegate
dans ton modèle (regarde la doc de Rails) et dans ce cas écrire dans
ta vue <%= depense.type_name || "N.C." %>.

De plus, écoute nous et renomme rapidement ta relation/modèle en autre
chose que Type/type ! Tout le monde te dit que type est un mot clé
réservé dans Rails, donc si t'as pas de problème maintenant t'en auras
forcément plus tard et tu risques de te mordre les doigts après des
heures à rechercher pourquoi.

Nicolas.

2010/3/16 Denis Helix <[email protected]>:
> Bon en faite
> @depenses = Depense.all
> @depense.type.name
>
> Ca marche quand il y un un type associé aux depense, sinon @depense.type
> = nil et
> @depense.type.name renvoie une erreur
> --
> Posted via http://www.ruby-forum.com/.
>
> --
> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
> Google Groups.
> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
> [email protected]
> Pour résilier votre abonnement envoyez un e-mail à l'adresse 
> [email protected]

-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]

Répondre à