To jest mój pierwszy post tutaj, więc mam nadzieję, że umieszczam to pytanie we właściwym miejscu. W przeciwnym razie, proszę dać mi znać, aby wiedzieć, następnym razem, kiedy zamieszczam tutaj :)Ruby on Rails -HTTP error handling
Pracuję na stronie internetowej RoR i chciałbym obsługiwać błędy serwera (400, 404, 500, itp.) Indywidualnie. Ponieważ strona jest dynamiczna, chciałbym poradzić sobie z błędami w środowisku rails, a nie na poziomie serwera. Przykładem tego, co chciałbym zrobić, może być przedstawienie użytkownikowi materiału opcjonalnego lub paska wyszukiwania, gdy wpadnie na stronę lub szablon, który nie zostanie załadowany lub po prostu nie istnieje.
Jestem nowy w RoR, więc proszę o mnie proszę na wypadek, gdy pytam o oczywistość.
Tak, zrobiłem trochę czytania i myślę, że korzystanie z obsługi wyjątku rescue_from jest sposobem, aby przejść w moim przypadku. (Byłbym bardziej niż szczęśliwy, gdyby ktoś z was miał inne zdanie).
Mam proste prototyp (patrz kod poniżej) i działa, jednak pojawia się błąd, kiedy to następującą procedurę obsługi wyjątku do kodu:
rescue_from ActionController::MissingTemplate, :with => :not_found #404
Teraz nie widzę że mam błąd w pisowni i widziałem tę linię w kodzie opublikowanym w Internecie. Jednak, kiedy to mi się następujący błąd ułożenia:
Routing Error No route matches "/errorhandle" with {:method=>:get}
pracuję na szynach 2.3.5, chyba że ma coś wspólnego z tym?
Mam nadzieję, że pomożesz mi rzucić trochę światła na tę kwestię.
Pozdrawiam! /Maja
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
protect_from_forgery #See ActionController::RequestForgeryProtection for details
#ActiveRecord exceptions
rescue_from ActiveRecord::RecordNotFound, :with => :not_found #400
#ActiveResource exceptions
rescue_from ActiveResource::ResourceNotFound, :with => :not_found #404
#ActionView exceptions
rescue_from ActionView::TemplateError, :with => :not_found #500
#ActionController exceptions
rescue_from ActionController::RoutingError, :with => :not_found #404
rescue_from ActionController::UnknownController, :with => :not_found #404
rescue_from ActionController::MethodNotAllowed, :with => :not_found #405
rescue_from ActionController::InvalidAuthenticityToken, :with => :not_found #405
rescue_from ActionController::UnknownAction, :with => :not_found #501
# This particular exception causes all the rest to fail.... why?
# rescue_from ActionController::MissingTemplate, :with => :not_found #404
protected
def not_found
render :text => "Error", :status => 404
end
# Scrub sensitive parameters from your log
# filter_parameter_logging :password
end
Czy możesz pokazać nam odpowiednie trasy z routes.rb, jeśli w ogóle? – Trevoke
Pewnie Trevoke, dzięki za szybką odpowiedź. Nie dodałem nic do routes.rb, więc domyślam się, że to prawie std. plik: ActionController :: Routing :: Routes.draw do | map | map.resources: errorhandlers # ... # działki linii komentowane się # ... map.connect ': regulator /: action /: id' map.connect „: kontroler /: action/: id.: format " koniec –
uh, nie wiem jak sprawić, by komentarz wyglądał ładnie i porządnie * uark *. Mam nadzieję, że da się je odczytać ... –