0Pricing
Ruby Academy · Lektion

Controller und Actions

Anfragen verarbeiten

Controller und Actions ist eine kostenlose Ruby Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ruby Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist ein Controller?

Ein Controller empfängt eine Anfrage vom Router, erledigt die erforderliche Arbeit und entscheidet, was zurückgesendet wird. Er koordiniert zwischen Models und Views.

  • Controller befinden sich in app/controllers.
  • Sie erben von ApplicationController.
  • Jede öffentliche Methode ist eine Aktion.

Einen Controller definieren

Ein Controller ist eine Klasse, deren Name mit Controller endet. Konventionsgemäß verarbeitet ArticlesController die Routen für die Ressource articles.

class ArticlesController < ApplicationController
  def index
    @articles = Article.all
  end
end

Aktionen werden Routen zugeordnet

Jede der sieben REST-Routen ruft eine passende Aktion auf. Der Router sendet GET /articles an index, GET /articles/1 an show und so weiter. Wenn die Aktionen gemäß der Konvention benannt werden, bleibt alles automatisch miteinander verbunden.

Der params-Hash

Anfragedaten treffen in params ein, einem Hash-ähnlichen Objekt mit Pfadsegmenten, Query-Strings und Formularfeldern. Für /articles/5 ist params[:id] gleich "5".

def show
  @article = Article.find(params[:id])
end

Instanzvariablen für Views

Controller übergeben Daten über Instanzvariablen mit dem Präfix @ an Views. Jede in der Aktion gesetzte @variable ist im passenden View-Template sichtbar.

def index
  @articles = Article.all
  # @articles is available in index.html.erb
end

index und show implementieren

Die Leseaktionen sind einfach: index lädt eine Sammlung, show lädt anhand der ID einen einzelnen Datensatz. Anschließend rendern sie ihre Standard-Templates.

class ArticlesController < ApplicationController
  def index
    @articles = Article.all
  end

  def show
    @article = Article.find(params[:id])
  end
end

create implementieren

Die Aktion create erstellt aus übermittelten Daten einen Datensatz und speichert ihn. Bei Erfolg leitet sie weiter, bei einem Fehler rendert sie das Formular erneut, damit der Benutzer die Fehler beheben kann.

def create
  @article = Article.new(article_params)
  if @article.save
    redirect_to @article
  else
    render :new, status: :unprocessable_entity
  end
end

redirect_to im Vergleich zu render

Zwei sehr unterschiedliche Antworten:

  • redirect_to weist den Browser an, eine neue Anfrage an eine andere URL zu senden.
  • render gibt für die aktuelle Anfrage direkt eine View zurück.

Leiten Sie nach einem erfolgreichen Schreibvorgang weiter; rendern Sie ein Formular mit Fehlern erneut.

Vor-Aktionen

Eine before_action führt gemeinsame Vorbereitungen vor ausgewählten Aktionen aus und verringert so Wiederholungen. Häufig wird damit der für show, edit, update und destroy benötigte Datensatz geladen.

class ArticlesController < ApplicationController
  before_action :set_article, only: [:show, :edit, :update, :destroy]

  private

  def set_article
    @article = Article.find(params[:id])
  end
end

Filter und Authentifizierung

before_action kann auch Regeln durchsetzen. Ein Schutzmechanismus wie before_action :require_login kann mit redirect_to login_path weiterleiten und die Aktion beenden, wenn der Benutzer nicht angemeldet ist. So lassen sich ganze Controller auf einmal schützen.

before_action :require_login

private

def require_login
  redirect_to login_path unless current_user
end

Fehlende Datensätze behandeln

Wenn find keinen Datensatz finden kann, löst es RecordNotFound aus, was Rails in der Produktion in einen 404-Fehler umwandelt. Mit rescue_from können Sie dies anpassen und eine verständliche Seite anzeigen.

rescue_from ActiveRecord::RecordNotFound do
  redirect_to articles_path, alert: "Not found"
end

Kurze Überprüfung

Testen Sie Ihr Verständnis von Controllern.

Rückblick: Controller und Aktionen

Sie haben gelernt, wie Controller Anfragen verarbeiten:

  • Aktionen werden gemäß der Konvention Routen zugeordnet.
  • params enthält Anfragedaten; @variables erreichen die View.
  • create speichert und leitet anschließend weiter oder rendert erneut.
  • redirect_to und render dienen unterschiedlichen Zwecken.
  • before_action teilt Vorbereitungen und setzt Authentifizierungsregeln durch.

Als Nächstes halten wir Massenzuweisungen mit Strong Parameters sicher.

Häufig gestellte Fragen

Ist die Lektion „Controller und Actions“ kostenlos?

Ja — der vollständige Text von „Controller und Actions“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ruby Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Controller und Actions“?

Anfragen verarbeiten Du übst Ruby Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Ruby Academy zu starten?

Keine Vorkenntnisse erforderlich. Ruby Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Controller und Actions“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Ruby Academy-Lektion Code schreiben und ausführen?

Ja. Jede Ruby Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Routen und Ressourcen
  2. Controller und Actions
  3. Strong Parameters
  4. Views und Rendering
← Zurück zu Ruby Academy