Ciao, mi ritrovo ad affrontare un altro problema (a breve vi mostrerò come sto applicando i vostri preziosi consigli nel dominio che ho appena registrato) Faccio un esempio, l'utente sta navigando quà : home/show/10 se fa un operazione particolare il :before_filter devia l'indirizzo alla pagina di login, io vorrei che una volta finito il login si torni all'operazione che si intendeva fare quindi vorrei memorizzare quell' home/show/10. Come faccio all'interno del controller a sapere: controller, action e id correnti?
on 09.04.2008 18:32
on 09.04.2008 18:36
On Apr 9, 2008, at 6:32 PM, Marco Mastrodonato wrote: > all'operazione che si intendeva fare quindi vorrei memorizzare quell' > home/show/10. > > Come faccio all'interno del controller a sapere: controller, action > e id > correnti? nel filtro: session[:return_page] = request.env["HTTP_REFERER"] dopo il login redirect_to session[:return_page] || "/" (o qualche altra pagina di default) S.
on 09.04.2008 18:56
Stefano Cobianchi wrote: > redirect_to session[:return_page] || "/" (o qualche altra pagina di > default) Grazie mille, funziona benissimo e mi sei stato molto di aiuto! :) Ho usato questa dicitura (mi stavano fregando le graffe) redirect_to session[:return_page] || {:controller=>"home",:action=>"index"}
on 09.04.2008 19:06
On Apr 9, 2008, at 6:56 PM, Marco Mastrodonato wrote: > Stefano Cobianchi wrote: >> redirect_to session[:return_page] || "/" (o qualche altra pagina di >> default) > > > Grazie mille, funziona benissimo e mi sei stato molto di aiuto! :) > > Ho usato questa dicitura (mi stavano fregando le graffe) > redirect_to session[:return_page] || > {:controller=>"home",:action=>"index"} se definisci esplicitamente la route: map.home "home", :controller => "home" [oppure (come penso sia il tuo caso) map.root :controller => "home"] poi puoi scrivere: redirect_to session[:return_page] || home_url [oppure redirect_to session[:return_page] || root_url] cosi' e' molto piu' efficiente (ed elegante) S.
on 11.04.2008 10:56
Stefano Cobianchi wrote: > > cosi' e' molto piu' efficiente (ed elegante) > > S. Si uso il map.root o meglio, l'ho solamente disasteriscato ed ho messo il mio controller. Direi che in quella maniera è molto più pulito. Invece mi è poco chiara la prima che hai messo, anche dopo leggendo la documentazione. Mi faresti qualche esempio con qualche parametro, tipo se volessi mappare questo :controller=>"home", :action=>"show", :id=>1, :altro=>"pippo"
on 11.04.2008 11:08
On Apr 11, 2008, at 10:56 AM, Marco Mastrodonato wrote: > Invece mi è poco chiara la prima che hai messo, anche dopo leggendo la > documentazione. Mi faresti qualche esempio con qualche parametro, tipo > se volessi mappare > questo :controller=>"home", :action=>"show", :id=>1, > :altro=>"pippo" Cioe' vorresti avere un url mappato su HomeController#show ma solo quando i parametri "id" e "altro" sono rispettivamente "1" e "pippo"? map.connect "foo/:id/:altro", :controller => "home", :action => "show", :requirements => {:id => /^1$/, :altro => /^pippo$/} ma non sono sicuro di aver capito bene :-) S.
on 11.04.2008 11:25
Stefano Cobianchi wrote: > > ma non sono sicuro di aver capito bene :-) > > S. Chiedevo solamente di creare delle chiamate statiche, non avevo capito che si potesse fare qualcosa di così elaborato E come richiamo quell'esempio che mi hai fatto, così è corretto? foo_url(:id=>1, :altro=>"pippo") e se :requirements non è true non effettua la chiamata? Se mi dici si, è molto fichissimo :)
on 11.04.2008 11:43
On Apr 11, 2008, at 11:25 AM, Marco Mastrodonato wrote: Piccola correzione, i requirements implicano sempre le ancore (^...$) per cui non vanno messe. Inoltre non c'e' bisogno di specificare la chiave :requirements (tutte le chiavi associate a espressioni regolari vengono considerate dei requirement) map.connect "foo/:id/:altro", :controller => "home", :action => "show", :id => /1/, :altro => /pippo/ > > Chiedevo solamente di creare delle chiamate statiche, non avevo capito > che si potesse fare qualcosa di così elaborato > > E come richiamo quell'esempio che mi hai fatto, così è corretto? > foo_url(:id=>1, :altro=>"pippo") Dato che la route non ha nome: url_for(:id => "1", :other => "pippo") # => http://localhost:3000/foo/1/pippo (posto che non ci siano altre route che possano fare match senza specificare controller e/o action) se avesse un nome, "foo_url" sarebbe sufficiente > > e se :requirements non è true non effettua la chiamata? Se mi dici > si, è > molto fichissimo :) Se tenti di generare un url non riconducibile a nessuna route viene lanciata un'eccezione. S.
on 30.04.2008 09:28
Grazie Stefano, però c'è ancora qualcosa che non mi è chiara, questo delle routes è un argomento che assimilo con difficoltà e credo che mi servirebbe una spiegazione/guida dalla base con esempi, conosci qualcosa di online? Anche un buon libro cartaceo potrebbe essere una soluzione. Qualcosa tipo questo: http://darynholmes.wordpress.com/2008/03/15/beginners-tutorial-routing-in-rails-20-with-rest-part-1-of-n/