devo percorsi come questo:Redirect radice URL da qualche altra parte in applicazione Rails
map.namespace 'prepayments', :path_prefix => '/:locale/prepayments' do |prepayment|
prepayment.root :controller => 'login', :namespace => 'prepayments'
...
end
map.redirect '/', :controller => 'prepayments/login' # this is not working
# I tried also
map.root :controller => 'prepayments/login'
Quello che vorrei ottenere è che dopo aver digitato: www.example.com mi avrebbe reindirizzare www.example. com/it/risconti.
Prima, quando ho usato map.root
dall'alto esempio appena stati al www.example.com e reso corretta visione (ma era senza :locale
e ha funzionato bene), poi ho aggiunto :locale
ai miei percorsi e da questo momento mio punto di vista (che utilizza una forma) non funziona correttamente. Ottengo l'errore che non riesce a trovare il percorso corrispondente per il modulo, il che è giusto, perché non ho superato alcun :locale
.
Quindi, come reindirizzare la radice in un'altra pagina? Probabilmente sarà necessario generare percorso corretto e farla passare attraverso http 302. e/o come fare qualcosa di simile:
map.root :controller => 'prepayments/login', :my_locale => 'en'
EDIT: miei percorsi rake aspetto:
prepayments_root /:locale/prepayments {:controller=>"prepayments/login", :action=>"index"}
prepayments_create /:locale/prepayments/send_email {:method=>:post, :controller=>"prepayments/login", :action=>"send_email"}
prepayments_home /:locale/prepayments/home {:controller=>"prepayments/prepayments", :action=>"home"}
prepayments_save /:locale/prepayments/save {:controller=>"prepayments/prepayments", :action=>"save"}
prepayments_agree /:locale/prepayments/agree {:controller=>"prepayments/prepayments", :action=>"agree"}
prepayments_disagree /:locale/prepayments/disagree {:controller=>"prepayments/login", :action=>"logout"}
prepayments_payment /:locale/prepayments/payment {:controller=>"prepayments/prepayments", :action=>"payment"}
prepayments_payment_email /:locale/prepayments/payment_email {:controller=>"prepayments/prepayments", :action=>"payment_email"}
/:locale/prepayments/:uid {:controller=>"prepayments/login", :action=>"verify"}
redirect/ {:controller=>"prepayments/login", :action=>"index"}
EDIT :
Ho provato a farlo nel modo in cui Garrett ha proposto e ha funzionato. Ho cambiato le rotte:
map.redirect '/', :controller => 'prepayments/login', :action => 'welcome'
e aggiunto il metodo benvenuti nel controllore:
def welcome
redirect_to prepayments_root_path(:locale => 'en')
end
e funziona come avrei voluto (in modo che i cambiamenti URL nel browser).
L'altro modo è quello di cambiare le rotte in questo modo:
map.root :controller => 'prepayments/login', :locale => 'en'
Funziona anche, ma non sta riorientando (non cambia URL nel browser). Non sono sicuro se esiste un'opzione come map.redirect
. L'ho trovato negli esempi su www ma ho trovato anche plugin che aggiungono tale funzionalità.
Grazie per l'aiuto!
Ma come aggiungere questo: parametro locale a redirect_to prepayments_root_path? – klew
So che posso aggiungerlo prima con una stringa, ma c'è un modo migliore? – klew
Puoi dare l'output dei tuoi 'rake routes'? – Garrett