Shallow - Routing

Qualcuno mi sa indicare qualche sito su cui studiare un pò questa
funzione di costruzione dinamica dell’url?

map.resources :nations, :shallow => true do |nation|
nation.resources :genres do |genre|
article.resources :authors
end
end

Grazie mille

Luigi

Bhe… se ti riferisci esplicitamente alla funzione shallow l’unica
risorsa
che ho
trovato sul termine è la documentazione delle api di rails :slight_smile:
(tieni conto però che secondo me è gia abbastanza esauriente quella nel
senso che
a parte trimmare le url non fà molto di
più)
yezz

Qui trovi un railcast su nested resources in rails 2.x

Parla anche delle shallow routes

ciao

Il giorno 02/apr/09, alle ore 09:26, Luigi M. ha scritto:

IO non replicherei una struttura a chiavi e valori

Es: nazionalita’/inglese

con gli URL. (o ti ritrovi con url chilometrici)

Per le categorie (relazione has_and_belong_to_many)

cioa

Il giorno 02/apr/09, alle ore 14:38, Luigi M. ha scritto:

Salve ragazzi e intanto grazie per le risposte.
La mia soluzione non è o meglio non deve essere necessariamente lo
shallow ma me l’hanno consigliato e dato che non lo riesco ad utilizzare
avrei avuto bisogno di qualche indicazione.

Il mio problema è il seguente:

nel file routes.rb ho la seguente route:

map.selection
‘libri/nazionalita/:nation/genere/:category/autore/:author/elenco.html’,
:controller=>‘book’, :action=>‘selection’

in tal modo possono essere generati degli url del tipo:

http://127.0.0.1:3000/libri/nazionalita/tutte/genere/commedia/autore/tutti/elenco.html

http://127.0.0.1:3000/libri/nazionalita/tutte/genere/commedia/autore/eliott-parker/elenco.html

http://127.0.0.1:3000/libri/nazionalita/inglese/genere/commedia/autore/eliott-parker/elenco.html

etc…

Sarebbe bello, però, nel caso in cui venga selezionata solo la categoria
o solo l’autore o solo la nazionalità o solo due di queste generare URL
del tipo:

http://127.0.0.1:3000/libri/genere/commedia.html

http://127.0.0.1:3000/libri/nazionalita/inglese/genere/commedia.html

anche se forse sarebbe più facile(non saprei) uno del tipo:

http://127.0.0.1:3000/libri/nazionalita/inglese/genere/commedia/elenco.html

etc…

Se riuscite ad aiutarmi ve ne sarei grato!

Grazie

Luigi

Forse una mezza soluzione l’ho trovata, spero possa eservi utile.

Riporto l’esempio per un caso un pò più semplice e cioè con meno scelte,
ma penso si possa tranquillamente applicare al caso più complesso.

routes.rb:

map.category ‘elenco/software/:category.html’,
:controller=>‘view’,
:action=>‘index’

map.license ‘elenco/software/licenza/:license.html’,
:controller=>‘view’,
:action=>‘index’

map.catlic ‘software/:category/:license/elenco.html’,
:controller=>‘view’,
:action=>‘index’

nella vista piuttosto che utilizzare il routing specifico si può
utilizzare quello generico:

url_for(:category=>@book.cat.name)

in questo modo verrà automaticamente agganciato il map.category che
genererà l’url:

…elenco\software\antivirus.html

se invece si utilizza:

url_for(:category=>@book.cat.name,:license=>lic.name)

verrà agganciato automaticamente map.catlic

e inoltre se dovesse capitare che :category è nil oppure :license è nil
automaticamente vengono aggangiati map.category map.license oppure
map.catlic.

che ne dite???

Luigi

Luigi M. wrote:

che ne dite???

Luigi

Ciao Luigi, hai trovato un sistema per ottenere il tuo scopo e questo è
positivo ma il mio parere è essenzialmente allineato col consiglio di
Tucano, dovresti utilizzare le “risorse” e limitarti ad annidare queste,
potrebbe aiutarti approfondire il concetto dell’architettura REST con
cui rails ci va a nozze

Ti riferisci al consiglio di non generare url kmtrici?
Se si,
non sono molto d’accordo, se mi consentite, perché un url esplicativo
della pagina che si desidera mostrare è molto importante dal punto di
vista dello spider.

Vorrei portarvi subito un esempio.

Il sito è online da circa 2 settimane, se provate a cercare con google
“libri di romanzi storici” esce in 14 posizione e il testo evidenziato
dal motore di ricerca sta anche nell’url.

Grazie

Luigi

Luigi M. wrote:

Vorrei portarvi subito un esempio.

Più che per evitare gli url kilometrici era per non impazzire nel
crearli, anche se ho visto che url_for fa molto del lavoro sporco.
Comunque ho visto il sito, niente male!

Grazie lo stesso per tutti i consigli ma alla fine ci ho rinunciato,
soprattutto per mancanza di tempo, e ho scelto la soluzione non troppo
elegante del tipo:

http://…/libri/nazionalita/tutte/genere/romanzo/autore/tutti/editore/tutti/elenco.html

http://…/libri/nazionalita/tutte/genere/romanzo/autore/giorgio-faletti/editore/tutti/elenco.html

Gli url così non mi sembrano eccessivamente lunghi ma sono
spider-friendly perché esplicativi, nooo?

Cmq il sito oramai è on-line quindi non posso più modificare gli url.

Recensioni-Libri.Net

…grazie mille!!!