2011-02-15 9 views
0

Utilisation de Rails 2.3.8. Je veux montrer des données d'une relation compliquée.Affichage des données de plusieurs tables associées

Ce sont mes modèles:

shop.rb

has_many :city_shops 

id | name 
3 | Good Cafe 

city_shop.rb

belongs_to :city 
belongs_to :shop 

id | city_id | shop_id | notes 
2 | 4 | 3 | Delicious food in Paris 

city.rb

belongs_to :article 
has_many :city_shops 
has_many :shops, :through => :city_shops 

id | article_id 
4 | 5 

article.rb

has_many :shops, :through => :shop_articles 
has_many :cities, :dependent => :destroy 

id | user_id | name 
5 | 6 | Favorite shops in France 

user.rb

has_many :articles 

id | login 
6 | victor 

Le scénario est ce (ne peut pas être logique): Un utilisateur avec l'ID 6 crée de nombreux articles. Disons qu'il crée cet article appelé Magasins favoris en France. Dans cet article, il y a cities. Dans chaque city, il y a city_shops où il y a des détails shop et notes de city_shops.

J'ai également la page individuelle shop. Je souhaite que les visiteurs sachent quelles notes ont été laissées par les utilisateurs, où se trouve la note et le lien vers l'article de cet utilisateur.

Dans la page shop, il faut lire:

Note par les utilisateurs "Delicious food à Paris" par "vainqueur", partagé "lien vers mes boutiques préférées en France".

J'espère que cette question est plus claire que précédente. Merci beaucoup.

+0

Donc, vous avez @shop et que vous souhaitez afficher les données des modèles associés? – LapinLove404

+0

La lecture de ce guide: http://guides.rubyonrails.org/association_basics.html devrait vous aider à comprendre les associations. – tjeden

+0

J'ai révisé ma question et donné plus de détails. Pouvez-vous regarder à nouveau? Merci! – Victor

Répondre

1
Notes by users:<br /> 
<% @shop.city_shops.each do |city_shop| %> 
    "<%= city_shop.notes %>" by "<%= city_shop.city.article.user.login%>", shared in <%= link_to city_shop.city.article.name, "#{url}" %><br /> 
<% end > 

Vous devez fournir l'URL dans le lien et vous devez ajouter ce aussi votre article modèle:

belongs_to :user 
+0

La valeur de <% = city_shop.city.article.user.login%> ou tout texte brut après <% = city_shop.notes%> sera affiché deux fois en quelque sorte. Une raison pour laquelle? – Victor

+0

hmm ... Je ne peux pas penser à une raison.pouvez-vous essayer 'city_shop.inspect' pour comprendre ce qui se passe .. – rubyprince

1
<% @shop.city_shops.each do |city_shop| %> 
    city_shops notes: <%= city_shop.notes %> 
    users: <%= city_shop.city.country.user.username %> 
    country_id: <%= city_shop.city.country_id %> 
<% end %> 

Il y a quelque chose d'étrange avec vos modèles.

+0

J'ai donné plus de détails sur la question. J'espère que c'est plus clair maintenant. Pouvez-vous s'il vous plaît lire à nouveau? Merci beaucoup! – Victor

Questions connexes