Question

J'ai un à plusieurs rapports relativement simple et utilise acts_as_tree pour l'obtenir organisé dans la vue. Il ressemble un peu à ceci:

Racine

  |_Product 1
  |_Product 2
  |_Category 1.1

        |_Product 3
        |_Product 4
        |_Category 1.1.1

               |_Product 5

La façon dont je l'ai mis en place est que je liste des produits dans l'action « show » de la catégorie. Cependant, je ne peux pas sembler trop comprendre comment afficher: Produit 1-5 dans le « show » pour la catégorie 1, produit 3-5 dans la catégorie 1.1 et ainsi de suite ...

Quelqu'un at-il un indice, d'où je peux le ramasser?

Merci! Val

Était-ce utile?

La solution

Vous pouvez également jeter un oeil à la récente petit bijou conçu pour la haute performance quand on doit obtenir tous les descendants dans une requête SQL.

Autres conseils

Si vous utilisez awesome_nested_set (recommandé, je fais), alors vous pouvez faire ceci:

Si le produit belongs_to Catégorie:

class Category < ActiveRecord::Base
    def products_in_tree
        Product.all(:joins => :category, :conditions => ['categories.lft >= ? and categories.rgt <= ?', left, right])
    end
end

Si le produit has_and_belongs_to_many Catégorie (ou has_many: par), changer le: rejoindre à:. Catégories

Vous devez utiliser un ensemble imbriqué si vous voulez résoudre ce avec des performances acceptables (qui est, d'éviter une multitude de bases de données séparées lookups pour dresser la liste).

Rails utilisés pour avoir des actes _ _ comme nested_set intégré, et .

Cependant, le défaut plugin Rails est pas très bon, ce qui est la raison pour laquelle plusieurs autres plugins a été fait. Je vous recommandons d'utiliser Impressionnant Nested Set , que je me suis utilisé avec des résultats satisfaisants.

ensembles emboîtés peut être un peu difficile à comprendre, mais nous espérons que le premier lien et l'autre README va vous l'expliquer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top