8 Stimmen

Behandlung von unbekannter Aktion in Rails 3

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?

10voto

ayckoster Punkte 6429

Behandeln Sie es nicht. Wenn ein Benutzer eine falsche URL eingibt, erhält er einen 404-Fehler, wenn Sie in die Produktionsumgebung wechseln.

Sie erhalten die Ausnahmen nur, weil Sie sich in der Entwicklungsumgebung befinden.

1voto

Michael Wales Punkte 9860

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.

1voto

d11wtq Punkte 34050

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.

0voto

skattyadz Punkte 330

Sie sollten in der Lage sein, die Standard-Rails-Behandlung zu verwenden, die die 404-Datei in Ihrem öffentlichen Verzeichnis lädt.

0voto

Arun Kumar Arjunan Punkte 6677

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X