Jeśli wprowadzę niewłaściwą trasę lub jeśli nie pojawią się żadne pasujące do niej błędy, chcę przekierować na ścieżkę root_path. Jak mogę to zrobić?Jeśli nie dopasujesz trasy, a następnie przekieruj do strony głównej
Dziękuję z góry
Jeśli wprowadzę niewłaściwą trasę lub jeśli nie pojawią się żadne pasujące do niej błędy, chcę przekierować na ścieżkę root_path. Jak mogę to zrobić?Jeśli nie dopasujesz trasy, a następnie przekieruj do strony głównej
Dziękuję z góry
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.
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.
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.
Działa, gdy piszemy powyższą trasę na dole wszystkich tras – VenkatK
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
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