Strona Błędu Basic Rails 404
Szukałem prostej odpowiedzi na to przez śmiesznie długi czas i wydaje się, że to musi być tak oczywiste i proste, ponieważ nikt nie ma łatwego, idiotycznego poradnika.
W każdym razie, wszystko, co chcę zrobić, to mieć pojedynczy 404.statyczna strona html, która ładuje się za każdym razem, gdy zostanie wyrzucony błąd. Idealnie powinno się to zdarzyć tylko w produkcji i inscenizacji.
Uważam, że to powinna być najłatwiejsza rzecz do zrobienia... ale nie mogę tego rozgryźć.
Każda pomoc jest dużo doceniam to.
5 answers
W Twoim ApplicationController
unless ActionController::Base.consider_all_requests_local
rescue_from Exception, :with => :render_404
end
private
def render_404
render :template => 'error_pages/404', :layout => false, :status => :not_found
end
Teraz skonfiguruj error_pages/404.html
i gotowe
...a może jestem zbyt ostrożna z wyjątkiem i zamiast tego powinieneś uratować RuntimeError.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-19 07:05:37
Wierzę, że jeśli uruchomisz tryb produkcyjny, to 404.html w katalogu publicznym jest obsługiwany, gdy nie ma tras dla adresu URL.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-19 03:47:28
Jeśli uruchomisz tryb produkcyjny, 404.html, 500.html, 422pliki html w katalogu publicznym są serwowane za każdym razem, gdy wystąpi odpowiedni błąd, wyświetlane będą strony z góry.
W rails 3.1
Możemy użyć jak poniżej: Rails 3.1 automatycznie wygeneruje odpowiedź z prawidłowym kodem statusu HTTP(w większości przypadków jest to 200 OK). Możesz użyć opcji :status, aby zmienić to:
Render: status = > 500
Render: status => : forbidden
Rails understands both numeric and symbolic status codes.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-24 12:49:37
Nie dostaniesz 404 za każdym razem, gdy jakikolwiek błąd zostanie wyrzucony, ponieważ nie wszystkie błędy powodują 404s. dlatego masz 404, 422 i 500 stron w katalogu publicznym. Myślę, że rails uznał te błędy za najczęstsze. Jak Ben powiedział, 404 pojawi się, gdy nie może czegoś znaleźć, 500, gdy aplikacja wyrzuci błąd. Między tymi dwoma, możesz pokryć wiele swoich baz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-19 03:49:54
Innym sposobem na to jest skonfigurowanie config/application.rb
za pomocą:
module YourApp
class Application < Rails::Application
# ...
config.action_dispatch.rescue_responses.merge!(
'MyCustomException' => :not_found
)
end
end
Tak, że gdy MyCustomException
jest podniesione, Rails traktuje je jako zwykłe :not_found
, renderując public/404.html
.
Aby przetestować to lokalnie, upewnij się, że zmienisz config/environments/development.rb
na:
config.consider_all_requests_local = false
Czytaj więcej o config.action_dispatch.rescue_responses
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-18 21:50:52