Routes complessa

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à ?

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

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

2009/7/3 Alessandro S. [email protected]

2009/7/3 Alessandro S. [email protected]

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/.


Ml mailing list
[email protected]
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
Writing http://sensejs.wordpress.com/
Collaborating http://therubymine.it
Reading http://stacktrace.it

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

Alessandro S. wrote:

Sandro P. wrote:

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

2009/7/3 Alessandro S. [email protected]

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

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
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?

Sandro P. wrote:

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

2009/7/3 Alessandro S. [email protected]

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

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!!

2009/7/3 Michele C. [email protected]:

A me non funziona:

che errore hai?

Luca

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