[RUBY] Verwenden Sie before_action! !!

Was ist before_action?

Hier werde ich kurz erklären, was before_action ist.

before_action wird im Controller definiert, wenn before_action verwendet wird Eine Methode, mit der eine allgemeine Verarbeitung ausgeführt werden kann, bevor eine Aktion ausgeführt wird. Mit anderen Worten, es wird verwendet, wenn Sie die Verarbeitung ausführen möchten, bevor Sie die Controller-Aktion von Schienen ausführen, oder wenn Sie die Verarbeitung derselben Beschreibung kombinieren möchten. </ font>

Auch wenn es in Worten erklärt wird: "Doyukoto?", "Ich kann mir nicht vorstellen ..." Ich denke, ich möchte dies anhand eines Beispiels erläutern.

Beispiel für eine Beschreibung von before_action

[Beispiel] before_action


Name des Klassencontrollers< ApplicationController
  before_action :Der Name der Methode, die Sie verarbeiten möchten

Gleichzeitig nutzen wir hier auch die Optionen. Sie müssen before_action nicht für jede Aktion verwenden. Geben Sie an, welche Aktion Sie vor der Ausführung verarbeiten möchten. Die dort verwendete Option ist die einzige Option.

Was ist die einzige Option? (Beschreibungsbeispiel)

Durch Verwendung der einzigen Option wie bei -Ressourcen kann begrenzt werden, welche Aktion ausgeführt werden soll, bevor sie ausgeführt wird. </ font>

"resources" </ font> ist eine Methode, mit der Sie das Routing von 7 Aktionen gleichzeitig festlegen können.

[Beispiel] before_action


Name des Klassencontrollers< ApplicationController
  before_action :Der Name der Methode, die Sie verarbeiten möchten, only: [:Aktionsname, :Aktionsname]

Verwenden Sie die einzige Option nach before_action wie oben beschrieben. Sie können die Aktion angeben, indem Sie wie im Beispiel schreiben.

Die Grundlagen sind wie oben beschrieben.

Wie soll ich schreiben, auch wenn ich mich auf dieses Beispiel beziehe? Ich denke, es wird Das Folgende ist eine Erläuterung der Gesamtbeschreibung der Steuerung.

Beispiel für die gesamte Beschreibung des Controllers

Hier möchte ich anhand eines Beispiels die gesamte Beschreibung des Controllers erläutern.

Dies ist ein Beschreibungsbeispiel, wenn before_action nicht zuerst verwendet wird. Ich möchte, dass Sie das folgende Beispiel sehen, aber es gibt die gleiche Beschreibung.

Wenn unbenutzt

[Beispiel] controller


class TweetsController < ApplicationController

  def index
    @tweets = Tweet.all
  end

  def new
    @tweet = Tweet.new
  end

  def create
    Tweet.create(tweet_params)
  end

  def destroy
    tweet = Tweet.find(params[:id])
    tweet.destroy
  end

  def edit
    @tweet = Tweet.find(params[:id])⬅️ Hier! !!
  end

  def update
    tweet = Tweet.find(params[:id])
    tweet.update(tweet_params)
  end

  def show
    @tweet = Tweet.find(params[:id])⬅️ Hier! !!
  end

  private

  def tweet_params
    params.require(:tweet).permit(:name, :image, :text)
  end
end

Betrachten Sie die Aktionen zum Bearbeiten und Anzeigen des Tweets-Controllers. @tweet = Tweet.find (params [: id]) </ font> wird wiederholt beschrieben. Ich möchte die Beschreibung dieses Teils zusammenfassen.

Im obigen Beispiel wird eine andere Beschreibung behandelt: Dieses Mal werde ich before_action nur an einer Stelle verwenden, also werde ich es zusammenfassen. Habe nichts dagegen. w

Das Folgende ist ein Beschreibungsbeispiel, wenn es verwendet wird.

Beim Benutzen

Schreiben Sie die Beschreibung, indem Sie "nur" die Bearbeitungsaktion ausführen und die Aktion anzeigen Ich möchte es zusammenfassen. Rufen wir dieses Mal die Methode before_action test_tweet auf!

[Beispiel] controller


class TweetsController < ApplicationController
  before_action :set_tweet, only: [:edit, :show]

  def index
    @tweets = Tweet.all
  end

  def new
    @tweet = Tweet.new
  end

  def create
    Tweet.create(tweet_params)
  end

  def destroy
    tweet = Tweet.find(params[:id])
    tweet.destroy
  end

  def edit
  end

  def update
    tweet = Tweet.find(params[:id])
    tweet.update(tweet_params)
  end

  def show
  end

  private

  def tweet_params
    params.require(:tweet).permit(:name, :image, :text)
  end

  def test_tweet
    @tweet = Tweet.find(params[:id])
  end
end

Bearbeiten Sie mit before_action die Aktion und zeigen Sie die Aktion an Vor der Ausführung rufen wir eine Methode namens test_tweet auf.

Auf diese Weise ist es ein gemeinsamer Prozess der beiden Aktionen. @tweet = Tweet.find (params [: id]) funktioniert.

Wiederholen Sie diesen Vorgang mit before_action wie im obigen Beispiel Es gibt nichts zu beschreiben, es ist also erfrischend und leicht zu sehen! !!

Zusammenfassung

· before_action ist vor der Ausführung der im Controller definierten Aktion. Eine Methode, die eine bestimmte allgemeine Verarbeitung </ font> ausführen kann - Die einzige Option verwendet die einzige Option auf dieselbe Weise wie Ressourcen, um zu begrenzen, welche Aktion vor der Ausführung ausgeführt werden soll. </ Font>

!! !! Wenn Sie Code aus diesen Dingen schreiben, ist es gut, ihn einfach zu lesen, ohne die gleiche Beschreibung zu wiederholen! !!