[RAILS] Was ist before_action?

Einführung

Dieses Mal werden wir lernen, wie "before_action" durch Anwendungsentwicklung funktioniert.

Was ist before_acton?

Es wird verwendet, wenn Sie die Verarbeitung ausführen möchten, bevor Sie die Aktion des Rails-Controllers ausführen, oder wenn Sie die Verarbeitung derselben Beschreibung kombinieren möchten.

Die grundlegende Schreibmethode ist wie folgt

tests_controller.rb


   before_action :Der Name der Methode, die Sie verarbeiten möchten

In diesem Fall wird die angegebene Methode verarbeitet, bevor jede in derselben Steuerung definierte Methode ausgeführt wird.

Alternativ können Sie die Aktion nur mit oder außer wie in der Ressourcenmethode einschränken.

tests_controller.rb


before_action :Der Name der Methode, die Sie verarbeiten möchten, only: [:Aktion 1,:Aktion 2]

In diesem Fall wird die angegebene "zu verarbeitende Methode" erst ausgeführt, bevor die Aktionen 1 und 2 ausgeführt werden.

Beispiel für die tatsächliche Verwendung

categories_controller.rb


class CategoriesController < ApplicationController
  def index
    @categorys = Category.all
    @category = Category.new
  end

  def create
    @category = Category.new(category_params)
    if @category.save
      redirect_to categories_path
    else
      @categorys = Category.all
      render :index
    end
  end

  def edit
    @category = Category.find(params[:id])⇦ Die Verarbeitung leidet
  end

  def update
    @category = Category.find(params[:id])⇦ Die Verarbeitung leidet
    if @category.update(category_params)
      redirect_to categories_path
    else
      render :edit
    end
  end

  def search
    @categorys = Category.where(is_valid: true)
    @category = Category.find(params[:id])⇦ Die Verarbeitung leidet
    @q = @category.notes.all.ransack(params[:q])
    @notes = @q.result(distinct: true)
    @title = @category.name
    render 'notes/index'
  end


  private

  def category_params
    params.require(:category).permit(:name, :is_valid)
  end
end

Wie Sie sehen können, wird die Beschreibung in Bearbeiten, Aktualisieren und Suchen behandelt.

Refaktorieren Sie daher den obigen Code und

categories_controller.rb


class CategoriesController < ApplicationController
  before_action :set_category, only: [:edit, :update, :search]⇦ Hinzufügen


  def index
    @categorys = Category.all
    @category = Category.new
  end

  def create
    @category = Category.new(category_params)
    if @category.save
      redirect_to categories_path
    else
      @categorys = Category.all
      render :index
    end
  end

  def edit
  end

  def update
    if @category.update(category_params)
      redirect_to categories_path
    else
      render :edit
    end
  end

  def search
    @categorys = Category.where(is_valid: true)
    @q = @category.notes.all.ransack(params[:q])
    @notes = @q.result(distinct: true)
    @title = @category.name
    render 'notes/index'
  end


  private

  def category_params
    params.require(:category).permit(:name, :is_valid)
  end

  def set_category
    @category = Category.find(params[:id])⇦ Fasst die allgemeine Verarbeitung zusammen
  end
end

Der allgemeine Prozess wird durch eine Methode namens set_category zusammengefasst und von before_action aufgerufen, wenn die Aktualisierungsaktion, die Bearbeitungsaktion und die Suchaktion ausgeführt werden.

authenticate_user!

before_action :authenticate_user!

Das obige hat "authenticate_user!", Eine Methode, die verwendet werden kann, wenn ein Gerät eingeführt wird. Diese Methode wechselt zum Anmeldebildschirm, wenn Sie nicht angemeldet sind.

Sie können häufig feststellen, dass Sie eine Versandhandels-Website wie Amazon verwenden. Sie können jedoch Produkte durchsuchen, ohne sich anzumelden. Sie werden jedoch aufgefordert, sich beim Kauf anzumelden.

Auf diese Weise gibt before_action die allgemeine Verarbeitung an, die ausgeführt werden soll, bevor eine Aktion ausgeführt wird.

Schließlich

Dieses Mal habe ich irgendwie verstanden, wie before_action funktioniert. Ich bin froh, wenn Sie es als Referenz verwenden können. Ich werde es nach Bedarf aktualisieren, wenn ich etwas anderes herausfinde.

Recommended Posts

Was ist before_action?
Was ist Cubby?
Was ist null? ]]
Was ist java
Was ist Schlüsselumhang?
Was ist Maven?
Was ist Selbst
Was ist Jenkins?
Was ist ArgumentMatcher?
Was ist IM-Jonglieren?
Was ist SLF4J?
Was ist Fassade? ??
Was ist Java <>?
Was ist Gradle?
Was ist POJO?
Was ist java
Was ist RubyGem?
Was ist Docker?
Was ist Byte?
Was ist Tomcat?
Was ist Maven Assembly?
Was ist Docker-Compose?
Was ist ein Konstruktor?
Was ist vue cli
Was ist eine Schnittstelle?
Was ist Rubys Selbst?
Was ist harte Codierung?
Was ist ein Stream?
Was ist Rubys attr_accessor?
Was ist Java-Kapselung?
Was ist die Erlaubnis verweigert?
Was ist Instanzsteuerung?
Was ist ein Initialisierer?
Was ist ein Operator?
Was ist Objektorientierung?
Was ist Guavas @VisibleForTesting?
Was ist ein MVC-Modell?
Was ist eine Anmerkung?
Was ist Java API-Java?
Was ist @ (Instanzvariable)?
Was ist Gradles Artefakt?
Verwenden Sie before_action! !!
Was ist before_action?
Was ist JPA-Prüfung?
[Java] Was ist flatMap?
Was ist ein Servlet?
Was ist Webentwicklung?
[Java] Was ist ArrayList?
Was ist eigentlich objektorientiert?
Was ist HttpSession session = request.getSession ();
Was ist Java Assertion? Zusammenfassung.
[Memorandum] Was ist ein Fehler?
Was ist eine Wrapper-Klasse?