de rien...
Il est clair qu'il faudra par la suite trouver une autre solution, car les
vues n'ont pas à faire se genre de traitement, penses y au moment du
refactoring.
2008/12/2 Julien Castelain <[EMAIL PROTECTED]>
> 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]
-~----------~----~----~----~------~----~------~--~---