Domanda

Ho un relativamente semplice relazione uno-a-molti e utilizzare acts_as_tree per farlo ha organizzato nella vista. Sembra un po 'come questo:

root

  |_Product 1
  |_Product 2
  |_Category 1.1

        |_Product 3
        |_Product 4
        |_Category 1.1.1

               |_Product 5

Il modo in cui impostare il tutto è che vi elenco i prodotti in azione 'show' della categoria. Tuttavia non posso sembrare troppo capire come mostrare: prodotto 1-5 nel 'show' per la categoria 1, prodotto 3-5 nella Categoria 1.1 e così via ...

Qualcuno ha un suggerimento, da dove posso prenderlo?

Grazie! Val

È stato utile?

Soluzione

Si può anche avere uno sguardo alla recente gioiello progettato per alte prestazioni, quando uno ha bisogno di ottenere tutti i discendenti in una query SQL.

Altri suggerimenti

Se si utilizza awesome_nested_set (consigliato, lo faccio), allora si può fare questo:

Se prodotto belongs_to Categoria:

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

Se has_and_belongs_to_many prodotto Categoria (o has_many: attraverso), cambiano il: iscriverti per:. Categorie

È necessario utilizzare un insieme nidificato se si vuole risolvere questo con prestazioni accettabili (cioè, di evitare un gran numero di ricerche nei database separati per compilare l'elenco).

Rails usato per avere atti _ _ come nested_set built-in, ed il spiegazione di come funziona è ancora molto buona e abbastanza valida. Oggi è necessario utilizzare questo come un plug .

Tuttavia, il plugin Rails di default non è molto buona, che è il motivo per cui è stato fatto diversi altri plugin. Mi consiglia di utilizzare Impressionante Nested Set , che io stesso ho usato con risultati soddisfacenti.

set nidificati possono essere un po 'difficile da capire, ma si spera che il primo anello e l'altro readme la volontà di spiegare a voi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top