Shallow - Routing


#1

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


#2

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


#3

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

http://railscasts.com/episodes/139-nested-resources

Parla anche delle shallow routes

ciao

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


#4

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:


#5

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


#6

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


#7

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


#8

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


#9

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!


#10

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


#11

…grazie mille!!!