# Routes complessa

**URL:** <https://www.ruby-forum.com/t/routes-complessa/171490>\
**Category:** IT\
**Created:** [July 3, 2009, 2:43pm UTC](https://www.ruby-forum.com/t/routes-complessa/171490 "2009-07-03T14:43:51Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![alesc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f19dbf/32.png) [@alesc](https://www.ruby-forum.com/u/alesc)\
**Post date:** [July 3, 2009, 2:43pm UTC](https://www.ruby-forum.com/t/routes-complessa/171490/1 "2009-07-03T14:43:51Z")

</div>

Devo mappare un url srtutturato come segue in routes:

map.connect ‘image/:width/:height/:image’, :controller =\> ‘default’,  
:action =\> ‘images’

problema:  
il parametro :image Ã¨ una url (/images/pippo.jpg)

come si fÃ ?

---

<div class="post-metadata">

**Author:** ![alesc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f19dbf/32.png) [@alesc](https://www.ruby-forum.com/u/alesc)\
**Post date:** [July 3, 2009, 2:45pm UTC](https://www.ruby-forum.com/t/routes-complessa/171490/2 "2009-07-03T14:45:15Z")

</div>

dimenticavo, chiaramente non voglio passarlo come parametro (es:  
/image/200/100?image=/images/pippo.jpg) funzionerebbe ma voglio degli  
url leggibili

---

<div class="post-metadata">

**Author:** ![alesc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f19dbf/32.png) [@alesc](https://www.ruby-forum.com/u/alesc)\
**Post date:** [July 3, 2009, 2:53pm UTC](https://www.ruby-forum.com/t/routes-complessa/171490/3 "2009-07-03T14:53:32Z")

</div>

Mettilo in coda (route globbing mi sembra si chiami)  
[http://api.rubyonrails.org/classes/ActionController/Routing.html](http://api.rubyonrails.org/classes/ActionController/Routing.html)

2009/7/3 Alessandro S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![alesc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f19dbf/32.png) [@alesc](https://www.ruby-forum.com/u/alesc)\
**Post date:** [July 3, 2009, 2:55pm UTC](https://www.ruby-forum.com/t/routes-complessa/171490/4 "2009-07-03T14:55:53Z")

</div>

2009/7/3 Alessandro S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> ## dimenticavo, chiaramente non voglio passarlo come parametro (es: /image/200/100?image=/images/pippo.jpg) funzionerebbe ma voglio degli url leggibili
> 
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> * * *
> 
> Ml mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

Siccome non uso Rails da un bel pò e non ho libri sotto mano mi sembra tu  
possa usare il “catch all routes”.

# routes.rb

map.connect ‘\*path’, :controller =\> ‘home’, :action =\> ‘catcher’

def catcher  
path = request.path  
# =\> “/the/url/you /had/written”  
end

Se non ricordo male, prima dovresti poter mettere anche delle chiavi  
come  
quello che ti serve, ma non ne sono sicuro.

–  
Andrea R., [http://mikamai.com](http://mikamai.com)  
Writing [http://sensejs.wordpress.com/](http://sensejs.wordpress.com/)  
Collaborating [http://therubymine.it](http://therubymine.it)  
Reading [http://stacktrace.it](http://stacktrace.it)

---

<div class="post-metadata">

**Author:** ![alesc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f19dbf/32.png) [@alesc](https://www.ruby-forum.com/u/alesc)\
**Post date:** [July 3, 2009, 3:16pm UTC](https://www.ruby-forum.com/t/routes-complessa/171490/5 "2009-07-03T15:16:20Z")

</div>

Alessandro S. wrote:

> in questo caso)

in più, alla url\_for puoi anche passare un array, senza fare tu a mano  
la join. questo evita anche che l’URL generata abbia dei %2F al posto  
degli /

Andrea

---

<div class="post-metadata">

**Author:** ![alesc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f19dbf/32.png) [@alesc](https://www.ruby-forum.com/u/alesc)\
**Post date:** [July 3, 2009, 3:38pm UTC](https://www.ruby-forum.com/t/routes-complessa/171490/6 "2009-07-03T15:38:01Z")

</div>

Alessandro S. wrote:

> Sandro P. wrote:
> 
> > Mettilo in coda (route globbing mi sembra si chiami)  
> > [http://api.rubyonrails.org/classes/ActionController/Routing.html](http://api.rubyonrails.org/classes/ActionController/Routing.html)
> > 
> > 2009/7/3 Alessandro S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
> 
> come si suol dire “basta leggere le api” quella sezione l’avevo proprio  
> saltata 😛
> 
> la soluzione per i posteri Ã¨ quindi :
> 
> map.connect ‘image/:width/:height/\*image’, :controller =\> ‘default’,  
> :action =\> ‘images’
> 
> a questo punto \*image crea un array che contiene tutti i parameti che  
> seguono (basta fare una join(“/”) e si ha il path corretto dell’immagine  
> in questo caso)
> 
> Thanx!!

A me non funziona:  
[http://127.0.0.1:3000/home/10/10/pippo/imagei.jpg](http://127.0.0.1:3000/home/10/10/pippo/imagei.jpg)  
nel controller  
@path = params[:image]  
e in index.hmtl.erb  
\<%= @path %\>  
la mia route Ã¨ cosi:  
map.connect ‘home/:width/:height/\*image’, :controller =\> ‘home’, :action  
=\> ‘index’

Qualcuno ha idea?

---

<div class="post-metadata">

**Author:** ![alesc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f19dbf/32.png) [@alesc](https://www.ruby-forum.com/u/alesc)\
**Post date:** [July 3, 2009, 3:05pm UTC](https://www.ruby-forum.com/t/routes-complessa/171490/7 "2009-07-03T15:05:59Z")

</div>

Sandro P. wrote:

> Mettilo in coda (route globbing mi sembra si chiami)  
> [http://api.rubyonrails.org/classes/ActionController/Routing.html](http://api.rubyonrails.org/classes/ActionController/Routing.html)
> 
> 2009/7/3 Alessandro S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

come si suol dire “basta leggere le api” quella sezione l’avevo proprio  
saltata 😛

la soluzione per i posteri Ã¨ quindi :

map.connect ‘image/:width/:height/\*image’, :controller =\> ‘default’,  
:action =\> ‘images’

a questo punto \*image crea un array che contiene tutti i parameti che  
seguono (basta fare una join(“/”) e si ha il path corretto dell’immagine  
in questo caso)

Thanx!!

---

<div class="post-metadata">

**Author:** ![alesc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f19dbf/32.png) [@alesc](https://www.ruby-forum.com/u/alesc)\
**Post date:** [July 3, 2009, 3:42pm UTC](https://www.ruby-forum.com/t/routes-complessa/171490/8 "2009-07-03T15:42:39Z")

</div>

2009/7/3 Michele C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> A me non funziona:

che errore hai?

Luca

---

<div class="post-metadata">

**Author:** ![alesc](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f19dbf/32.png) [@alesc](https://www.ruby-forum.com/u/alesc)\
**Post date:** [July 3, 2009, 3:44pm UTC](https://www.ruby-forum.com/t/routes-complessa/171490/9 "2009-07-03T15:44:35Z")

</div>

Piuttosto che passare un parametro del tipo: /images/pippo.jpg

non puoi creare una route del tipo:

map.connect ‘image/:width/:height/images/:image’,  
:controller =\> ‘default’,  
:action =\> ‘images’

dove il parametro Ã¨ solo pippo.jpg?

Anche perchÃ© cosÃ¬ facendo puoi, meglio ancora, usare una route del tipo:

map.connect ‘image/:width/:height/images/:image.jpg’,  
:controller =\> ‘default’,  
:action =\> ‘images’

e con il parametro passare solo il nome “pippo” che puoi facilmente  
costruire come preferisci.

Luigi
