Se si immette una route sbagliata o se non si verifica alcun errore di route, desidero reindirizzare a root_path. Come posso fare questo?Se nessuna route corrisponde, quindi reindirizza alla pagina radice
Grazie in anticipo
Se si immette una route sbagliata o se non si verifica alcun errore di route, desidero reindirizzare a root_path. Come posso fare questo?Se nessuna route corrisponde, quindi reindirizza alla pagina radice
Grazie in anticipo
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.
è 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.
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.
Funziona quando scriviamo la rotta sopra in fondo a tutti i percorsi – VenkatK
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
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