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

Répondre à