Affichage contenu relation N-N

Bonjour,

J’ai trois tables :
projets[id, nom, description]
especes[id, nom]
especes_projets[espece_id, projet_id]

Dans les views, j’ai spécifié la relation N-N :
Code :

class Projet < ActiveRecord::Base
has_and_belongs_to_many :especes

validation

validates_presence_of :nom
end

Code :

class Espece < ActiveRecord::Base
has_and_belongs_to_many :projets

validation

validates_presence_of :nom
end

Toutes les insertions, modifications se passent à merveille. C’est
dans la page show.html.erb que ça se gâte. La page show permet juste
l’affichage de l’occurence.
Comment fait-on pour afficher la liste des espèces du projet?

Voici l’extrait du code de la page show :
Code :

Récapitulatif du projet

<%= flash[:notice] %>


Nom <%=h @projet.nom %>
Description <%=h @projet.description %>
Espèces <%=h @projet.especes %>
Actif <% if @projet.actif %> Oui <% else %> Non <% end %>
<%= link_to 'Modifier', edit_projet_path(@projet) %>   <%= link_to 'Retour', projets_path %>

Et voici le résultat :
Espèces #Espece:0x4820010

Merci d’avance

Salut,
n’hésite pas à tester dans un script/console avant d’écrire ta vue.
Ton projet.especes retourne… un tableau. Donc tu peux tester la
présence d’éléments dans ce tableau, et itérer dessus de la même
manière que tu itères sur un résultat d’un .all dans une vue index.
En gros :
if projet.especes.present?
projet.especes.each do |espece|
espace.nom
(…)

normale tu lui demande de le faire
<%=h @projet.especes %> : la tu lui demande d’afficher un tableau (en
vrai
un proxy bref) d’espèce et il le fait.
si tu fais :
<% if !@projet.especes.blank? %>
<% for espece in @projet.especes %>
<%= espece.mon_champ_qui_vas_bien%>
<% end %>
<% end %>

Le 26 novembre 2009 11:29, pestak [email protected] a écrit :

Merci à vous deux!!!

On 26 nov, 12:10, guillaume belleguic [email protected]

Bonsoir liste

Juste un hint en passant, parce que j’ai un peu galèré avec ça depuis
15 jours (ZSH n’était pas des plus parlants). Si jamais en lançant une
tâche rake, celle-ci plante avec le message :

Virtual timer expired rake …

Downgradez votre driver MySQL de 2.8.x à 2.7, ça devrait aider.

Mes deux cents.
Fred


Frédéric de Villamil
“What’s mine is mine. What’s yours is still unsetteled” – Go player
proverb
[email protected] tel: +33 (0)6 62 19 1337
http://t37.net Typo : http://typosphere.org