Ich bin neu in der Rails-Entwicklung und habe eine Frage zur Behandlung einer unbekannten Aktion. Wie kann man am besten mit einem solchen Fehler umgehen?
Antworten
Zu viele Anzeigen?Zeigen Sie einen 404 Fehler an, der Benutzer hat eine URL eingegeben, für die keine entsprechende Aktion innerhalb des Controllers (oder eine Route) definiert ist, um sie zu verarbeiten. Es sollte genauso behandelt werden, als ob der Benutzer example.com/controller/jbsandfodsafoiuaudsfbsadf87basdfgsadfdsa
eingegeben hätte.
In config/environments/development.rb
, schalten Sie consider_all_requests_local
aus und starten Sie den Server neu. Nun werden Sie die Fehlerseiten sehen. Wenn Sie fertig sind, diese zu designen, schalten Sie consider_all_requests_local
wieder ein und starten Sie den Server erneut.
In der Produktionsumgebung erhalten die Benutzer die von Ihnen entworfene 404-Seite. In der Entwicklungsumgebung sehen Sie den Stapelüberlauf, damit Sie Ihre eigenen Fehler debuggen können.
Im Produktionsmodus wird die Ausnahme automatisch behandelt. Aber es gibt Fälle, in denen wir die Ausnahmen behandeln möchten. In unserem Fall rendern wir ein spezielles Layout für solche Seiten.
Im Anwendungscontroller müssen Sie die Ausnahmen wie folgt abfangen:
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