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 Apr 9, 2008, at 6:32 PM, Marco M. 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.
Stefano C. 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 Apr 9, 2008, at 6:56 PM, Marco M. wrote:
Stefano C. 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 Apr 11, 2008, at 10:56 AM, Marco M. 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.
Stefano C. 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”
Stefano C. 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
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:
On Apr 11, 2008, at 11:25 AM, Marco M. 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.