@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]
-~----------~----~----~----~------~----~------~--~---

Répondre à