2012-12-31 13 views

risposta

15

fare questa dichiarazione l'ultimo nel file config/routes.rb:

match "*path" => redirect("/") 

Il "*path" corrisponderà nulla e reindirizzerà al percorso principale.

Per ulteriori informazioni, dare un'occhiata a route globbing e redirection nelle guide ufficiali di Rails.

+2

Questo non ha ancora del progetto dei passeggeri. Non appena il passeggero si avvia -> Messaggio dall'applicazione: non utilizzare il metodo 'match' nel router senza specificare un metodo HTTP. Se vuoi esporre la tua azione sia a GET che a POST, aggiungi l'opzione 'via: [: get,: post]'. Se si desidera esporre la propria azione su GET, utilizzare 'get' nel router: Invece di: corrispondere" azione # controller " Do: ottenere" azione # controller "(ArgumentError) – absessive

4

è possibile reindirizzare un 404 mettendo questo nel file percorsi (in basso).

map.connect '*path', :controller => 'some_controller', :action => 'some_action' 

Per reindirizzare a root è possibile farlo.

match "*path" => redirect("/") 

c'è un po 'più in dettaglio in questo answer e alternativi modi di farlo catturando l'eccezione.

18

in Rails 4/5 è possibile

get '*path' => redirect('/') 

Modifica. Come sottolineato da @VenkatK, questo dovrebbe essere l'ultimo percorso. Il modo in cui vengono valutati i percorsi è che quelli in cima sono più importanti di quelli in basso.

+2

Funziona quando scriviamo la rotta sopra in fondo a tutti i percorsi – VenkatK

3

Per gli ultimi Rails 4.2+ la sintassi match è leggermente cambiato:

collocare questo in fondo il lavoro config/routes.rb

match '*path', to: redirect('/'), via: :all

Problemi correlati