Jestem nowy w rozwoju Rails i mam pytanie dotyczące obsługi nieznanego działania. Jaki jest najlepszy sposób na obsługę tego rodzaju błędu?Obsługa Nieznane działanie w Railsach 3
Odpowiedz
Nie dotykaj tego. Jeśli użytkownik wprowadzi zły adres URL, otrzyma błąd 404 po przejściu na środowisko produkcyjne.
Dostajesz wyjątki tylko dlatego, że jesteś w środowisku programistycznym.
Powinieneś być w porządku, aby użyć domyślnej obsługi Railsów, która załaduje plik 404 do Twojego katalogu publicznego.
Wyświetl błąd 404, użytkownik wprowadził adres URL, w którym nie ma odpowiedniej akcji w sterowniku (lub trasie) zdefiniowanej do obsługi. Powinien być traktowany tak samo, jakby użytkownik wprowadził example.com/controller/jbsandfodsafoiuaudsfbsadf87basdfgsadfdsa
.
W trybie produkcji wyjątek będzie obsługiwany automatycznie. Ale są przypadki, w których chcemy poradzić sobie z wyjątkami. W naszym przypadku wyrenderujemy specjalny układ dla takich stron.
W kontrolerze aplikacji trzeba ratować wyjątki tak:
PAGE_NOT_FOUND_ERRORS = ActiveRecord::RecordNotFound, ActionController::RoutingError, ActionController::UnknownAction, ActionController::UnknownController
def rescue_action_in_public(exception)
case exception
when *PAGE_NOT_FOUND_ERRORS
render_404
else
render_500
end
end
def render_404
render :file => File.join(RAILS_ROOT, 'public', '404.html'), :status => 404, :layout => true
end
def render_500
render :file => File.join(RAILS_ROOT, 'public', '500.html'), :status => 500
end
W config/environments/development.rb
, wyłącz consider_all_requests_local
i zrestartować serwer. Teraz zobaczysz strony błędów. Po zakończeniu projektowania ponownie włącz consider_all_requests_local
i ponownie uruchom serwer.
Podczas produkcji ludzie otrzymają zaprojektowaną stronę 404. W trakcie rozwoju widać ślad stosu, dzięki czemu można debugować własne błędy.
- 1. Obsługa JSON w szablonie JS/ERB w Railsach 3
- 2. Routing środowiskowy w Railsach 3
- 3. Wysyłanie biuletynów w Railsach 3
- 4. Łączenie ciągów w Railsach 3
- 5. Znajdź najnowszy rekord w Railsach 3
- 6. Ludzkie nazwy atrybutów w Railsach 3.x?
- 7. Jak utworzyć tableless ActiveRecord w Railsach 3
- 8. Oznaczone urządzenia skojarzeń w Railsach 3 zerwane
- 9. Jak wyłączyć przetwarzanie XML w Railsach 3
- 10. I18n w Railsach 3 z admin namespace
- 11. renderowanie częściowej wiadomości flash w Railsach 3
- 12. Żądania HTTP HEAD w Railsach 3
- 13. Jak dostosować odpowiedź to_json w Railsach 3
- 14. Brakujący skrypt/generowanie w Railsach 3
- 15. Jak zaimplementować wkładkę zbiorczą w Railsach 3
- 16. find_by_sql z formatem tablicowym w Railsach 3
- 17. "Brak tras" w przypadku korzystania z current_page w Railsach 3
- 18. Pozwól anonimowi wywołać określone działanie w asp.net mvc 3
- 19. Policz ilość zapytań w Railsach
- 20. Zasób zagnieżdżony z wieloma zasobami nadrzędnymi w Railsach 3
- 21. nginx nie wyświetla zasobów statycznych w Railsach 3
- 22. W Railsach 3, czy istnieje różnica między atrybutami = i assign_attributes?
- 23. Jak ustawić Thin jako domyślny w Railsach 3
- 24. Jak wyświetlić listę wszystkich ścieżek automatycznego ładowania w Railsach 3
- 25. Jak przycinać określony obszar spinaczem do papieru w Railsach (3)?
- 26. 301 przekierowanie grupy powiązanych ścieżek w Railsach 3 trasach
- 27. Co to jest mass-assignment w Railsach 3
- 28. Złap nieznaną akcję w Railsach 3 dla niestandardowego 404
- 29. Jak to zrobić() z włączeniami() w Railsach 3
- 30. Konfigurowanie konta Gmail do pracy z ActionMailer w Railsach 3
Rozumiem. Dzięki! +1 – Ben