2012-12-31 8 views

Odpowiedz

15

Zrób to stwierdzenie ostatnio w pliku config/routes.rb:

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

"*path" będzie pasował do niczego i odsyła do toru głównego.

Aby uzyskać więcej informacji, zobacz route globbing i redirection w oficjalnych przewodnikach Rails.

+2

To nie zrobił swojego projektu w pasażera. Zaraz po uruchomieniu pasażera -> Wiadomość od aplikacji: Nie powinieneś używać metody 'match' w routerze bez określenia metody HTTP. Jeśli chcesz udostępnić swoją akcję zarówno GET, jak i POST, dodaj opcję 'via: [: get,: post]'. Jeśli chcesz udostępnić swoją akcję GET, użyj 'get' w routerze: Zamiast: dopasuj" kontroler # akcja " Do: get" kontrolka # akcja "(ArgumentError) – absessive

4

można przekierować 404 przez umieszczenie tego w pliku trasy (na dole).

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

Aby przekierować do użytkownika root, można to zrobić.

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

Jest nieco bardziej szczegółowo w niniejszym answer i alternatywnych sposobów robią to poprzez przechwytywanie wyjątku.

18

w szynach 4/5 możesz

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

edytować. Jak wskazał @VenkatK, powinna to być ostatnia trasa. Sposób oceniania tras polega na tym, że te na górze są ważniejsze niż te na dole.

+2

Działa, gdy piszemy powyższą trasę na dole wszystkich tras – VenkatK

3

Do najnowszych Rails wersji 4.2 lub nowszej składnia match nieznacznie zmienione:

Place to na dole pracy config/routes.rb

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

Powiązane problemy