Merci guillaume,
J'allais justement répondre, par :
C'est encore moi,
J'ai encore changé de technique,
Dans mon controlleur,
@wines = Wine.find(:all)
dans ma vue
<% @wines.group_by(&:region).each do |region, regions_wines| %>
<li>
<a><%= region.name %></a>
<ul>
<% regions_wines.group_by(&:color).each do |color, colors_wines| %>
<li>
<%= color %>
<ul>
<% colors_wines.group_by(&:appellation).each do |appellation,
appellations_wines| %>
<li>
<%= appellation.name %>
<ul>
<% appellations_wines.each do |wine| %>
<li><%= wine.name %></li>
<% end %>
</ul>
</li>
<% end %>
</ul>
</li>
<% end %>
</ul>
</li>
<% end %>
</ul>
Pas très beau mais je pense que j'ai compris grâce à vous, Donc un grand *
merci* pour m'avoir supporté durant ce thread :)
Ah ruby quand tu nous tiens
2008/12/2 guillaume belleguic <[EMAIL PROTECTED]>
> @wines = Wine.find(:all)
>
> <% @wines.group_by(&:region_id) do |region_id, region_wines| %>
> <%= Region.find(region_id).name %>
> <% region_wines.group_by(&:color) do |color, color_wines| %>
> <%= color %>
> <% color_wines.group_by(&:appellation_id) do |appellation_id,
> appellation_wines| %>
> <%= Appellation.find(appellation_id).label %>
> <% appellation_wines.each do |appellation_wine| %>
> <%= appellation_wine.name %>
> <% end %>
> <% end %>
> <% end %>
> <% end %>
>
> 2008/12/2 Julien Castelain <[EMAIL PROTECTED]>
>
>> Désolé de persiter, mais voila, j'ai un peu progréssé
>>
>>
>> Dans mon controlleur j'ai
>>
>> @region = Region.find(:first, :conditions => ['name = ?', 'bordeaux'])
>> @wines = Wine.find(:all, :conditions => ['color = ? AND region_id = ?',
>> 'rouge', @region.id], :order => 'name ASC')
>>
>>
>> Dans ma vue j'ai
>>
>> <% @wines.group_by(&:appellation).each do |appellation, wines| %>
>> <%= appellation.name %>
>> <br />
>> <% wines.each do |w| %>
>> <%= w.name %><br />
>> <% end %>
>> <% end %>
>>
>> Exactement ce que je voulais, par contre, puis-je me servir du premier
>> exemple donné pour ne pas préciser la région et la couleur comme je l'ai
>> fait au dessus
>>
>> Merci
>>
>>
>> 2008/12/2 Julien Castelain <[EMAIL PROTECTED]>
>>
>>> Bon je galère toujours autant,
>>>
>>> Voici ce que j'ai fait
>>>
>>> @region = Region.find(:first, :conditions => ['name = ?',
>>> 'bordeaux'])
>>>
>>> @wines = Wine.find(:all, :conditions => ['color = ? AND region_id =
>>> ?',
>>> 'rouge', @region.id],
>>> :order => 'name ASC')
>>>
>>> @wines = @wines.group_by(&:appellation_id).each do |appellation_id,
>>> w|
>>>
>>> end
>>>
>>> Mais ça ressemble à n'importequoi, comment pourrais-je faire pour
>>> sortir une liste du style
>>>
>>> Region
>>> Couleur
>>> Appellation
>>> Vin
>>>
>>> Biens sur toutes ces infos (Region, Couleur, Appellation et Vin) ne
>>> doivent figurer qu'une fois dans cette liste
>>> A les bonnes prises de tête quand on a un niveau de merde comme le mien
>>> ça fatique :)
>>>
>>> Merci encore
>>>
>>>
>>>
>>> 2008/12/2 Julien Castelain <[EMAIL PROTECTED]>
>>>
>>>> Sinon, je me demandais si il n'y avait pas moyen de grouper tout cela
>>>> avec GROUP BY
>>>>
>>>> 2008/12/2 Julien Castelain <[EMAIL PROTECTED]>
>>>>
>>>>> Merci à vous, un grand pas a été franchi,
>>>>> maintenant je vais tenter de regrouper le tout par région, couleur et
>>>>> appellation car pour l'instant quand j'essaie d'afficher tout cela j'ai
>>>>> encore
>>>>>
>>>>> Bordeaux
>>>>> Rouge
>>>>> Haut Medoc
>>>>> Haut Medoc Rouge 1
>>>>> Bordeaux
>>>>> Rouge
>>>>> Haut Medoc
>>>>> Haut Medoc Rouge 2
>>>>> Bordeaux
>>>>> Rouge
>>>>> Haut Medoc
>>>>> Haut Medoc Rouge 3
>>>>>
>>>>> et je voudrais
>>>>>
>>>>> Bordeaux
>>>>> Rouge
>>>>> Haut Medoc
>>>>> Haut Medoc Rouge 1
>>>>> Haut Medoc Rouge 2
>>>>> Haut Medoc Rouge 3
>>>>>
>>>>>
>>>>> C'est pas évident à comprendre les blocks en ruby, en tout cas c'est
>>>>> très sympa de votre part
>>>>> Qui sait, il y aura peut etre du boulot pour quelqu'un si je persiste à
>>>>> echouer
>>>>>
>>>>> A +
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Dec 2, 2008 at 2:05 PM, Cyril Mougel <[EMAIL PROTECTED]>wrote:
>>>>>
>>>>>>
>>>>>> Julien Castelain wrote:
>>>>>> > Bonjour à tous,
>>>>>> >
>>>>>> > Je vais tenter de vous exposer mon problème en essayant d'etre
>>>>>> clair,
>>>>>> > en gros je n'arrive pas à "lier" certaines tables,
>>>>>> >
>>>>>> > J'ai une table "wines" qui ressemble à ceci :
>>>>>> >
>>>>>> > wines
>>>>>> > -- id
>>>>>> > -- name
>>>>>> > -- color
>>>>>> > -- region_id
>>>>>> > -- appellation_id
>>>>>> >
>>>>>> > exemple (1, "Mon vin", "Rouge", 1, 1)
>>>>>> >
>>>>>> > J'ai egalement les tables regions et appellations qui ressemblent
>>>>>> > elles à ceci :
>>>>>> >
>>>>>> > region
>>>>>> > -- id
>>>>>> > -- name
>>>>>> >
>>>>>> > exemple (1, "Bordeaux")
>>>>>> >
>>>>>> > appellation
>>>>>> > -- id
>>>>>> > -- bale
>>>>>> >
>>>>>> > exemple (1, "Chateau du slip")
>>>>>> >
>>>>>> > Voici ce que je souhaite faire (enfin mon client pas moi)
>>>>>> >
>>>>>> > Afficher
>>>>>> >
>>>>>> > - Region
>>>>>> > -- Couleur
>>>>>> > --- Appellation
>>>>>> > ---- Nom du vin
>>>>>> >
>>>>>>
>>>>>> Tu fais dans le même ordre :
>>>>>>
>>>>>> Region.all.each do |r|
>>>>>> puts "- #{r.name}"
>>>>>> r.wines.each do |w|
>>>>>> puts "\t-- w.color"
>>>>>> puts "\t\t --- w.appelation.name"
>>>>>> puts "\t\t\t --- w.name"
>>>>>> end
>>>>>> end
>>>>>>
>>>>>> --
>>>>>> Cyril Mougel
>>>>>> http://blog.shingara.fr
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
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]
-~----------~----~----~----~------~----~------~--~---