[RUBY] [Rails] Artikel für Anfänger, um den Fluss von form_with zu organisieren und zu verstehen

Einführung

Zu Beginn des Rails-Lernens konnte ich den Fluss von form_with nicht verstehen, daher werde ich ihn zusammenfassen. Schienen 5.2.4.

Zusammenfassung zuerst

Ich bin mir sicher, dass es Leute gibt, die sagen: "Komm schnell zusammen!". Also werde ich zuerst den Ablauf zusammenfassen. スクリーンショット 2020-06-02 1.08.39.png

Kurzer Kommentar

Es gibt ein Benutzermodell und ein Post-Modell.

** ① Zeigen Sie die Ansichtsseite (new.html.erb) mit der neuen Aktion an ** Wenn eine Aufforderung zum Aufrufen der neuen Aktion erfolgt, wird zuerst die neue Beitragsseite des Beitrags angezeigt. ※Bild 73ee6ee22fb145fb7034907eef85317e.png

** ② Übergeben Sie die durch die neue Aktion erstellte Instanz "@ post" an die Ansicht **

post_controller.rb


class PostsController < ApplicationController
~~
  def new
    @post = Post.new #Hier generiert@Beitrag ist neu.html.An erb übergeben
  end
~~

** ③ Geben Sie einen Wert in die Instanzeigenschaften ein und senden Sie ** f3253df790131a6ac795eeff52d4ee5d.gif

** ④ Rufe die Erstellungsaktion auf ** Wie Sie im obigen Bild sehen können, ruft form_with die Erstellungsaktion auf, wenn Sie auf die Schaltfläche "Senden" (Formular_mit senden) klicken.

  • Die Hilfsmethode form_with ist ein praktisches untergeordnetes Element, das die Eigenschaften der übergebenen Instanz (in diesem Fall "@ post") überprüft und entscheidet, ob zum Erstellen oder Aktualisieren übersprungen werden soll.

form_mit denkt


- @Beitrag ist leer → Ich mache es zum ersten Mal! Dann erstellen!
- @Beitrag ist nicht leer → Ich möchte ihn ändern! Dann aktualisieren!

** ⑤ Rufen Sie die post_params-Methode auf **

post_controller.rb


class PostsController < ApplicationController
~~
  def create
    #Die Erstellungsaktion wird aufgerufen und veröffentlicht.create(post_params)Wird ausgeführt → post_params heißt
    Post.create(post_params) 
    redirect_to root_path
  end

  private
  def post_params 
    params.require(:post).permit(:title, :content).merge(user_id: current_user.id)
  end
~~

** ⑥ Geben Sie von den von params empfangenen Werten den von allow (allow) empfangenen Wert an **

Status des von params empfangenen Werts


[1] pry(#<PostsController>)> params
=> <ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"oLGgLMTcqSPi7cbK9j1wFhH5rqiwXYO7GyRoZcZFZe6Y5VdbHrWCOyeo37kgW/bsl+eANQrz7p/lAzZMnAS8Gg==", 
"post"=>{"title"=>"Was ich heute gelernt habe", "content"=>"form_mit ist ein weises Kind!"}, 
"commit"=>"Post", "exept"=>:index, "controller"=>"posts", "action"=>"create"} permitted: false>

Da es schwer zu erkennen ist, bricht die Zeile an einer Position, die ursprünglich nicht beabsichtigt war, aber normalerweise wird sie in einer Zeile zurückgegeben.

`` post "=> {" title "=>" Was ich heute gelernt habe "," content "=>" form_with ist ein weises Kind! "}, Wird der Wert vonpost_params` behandelt?

Wenn Sie die von allow empfangenen Werte nicht zulassen, werden möglicherweise unbeabsichtigte Werte in der Tabelle gespeichert, sodass eine Angabe fast obligatorisch ist.

** ⑦ Beitrag mit dem Wert von post_params erstellen (erfolgreich in der Tabelle gespeichert) ** Der von der post_params-Methode zurückgegebene Wert wird also für Post.create verwendet Es befindet sich im selben Zustand wie unten.

  def create
    Post.create(title: "Was ich heute gelernt habe", content: "form_mit ist ein weises Kind!", user_id: 1) 
    redirect_to root_path
  end

Wenn Sie nach Bestätigung dieses Ablaufs das Bild am Anfang noch einmal betrachten, werden Sie Ihr Verständnis vertiefen!

abschließend

Die Unterschiede zwischen form_tag und form_for sind in diesem Artikel zusammengefasst. Wie schreibe ich form_with / form_for / form_tag in [Rails] haml

Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten.

Recommended Posts

[Rails] Artikel für Anfänger, um den Fluss von form_with zu organisieren und zu verstehen
[Für Anfänger] DI ~ Die Grundlagen von DI und DI im Frühjahr ~
[Für Anfänger] Verstehen Sie schnell die Grundlagen von Java 8 Lambda
Erklärung von Ruby on Rails für Anfänger ④ ~ Informationen zu Benennungsregeln und zur Verwendung von form_Tag ~
[Für Swift-Anfänger] Ich habe versucht, den chaotischen Layoutzyklus von ViewController und View zusammenzufassen
[Rails] So erhalten Sie die URL der Übergangsquelle und leiten sie um
Ich möchte den Ablauf der Spring-Verarbeitungsanforderungsparameter verstehen
Erklärung von Ruby on Rails für Anfänger ⑤ ~ Datenbank bearbeiten und löschen ~
[Rails] Lesen Sie das RSS der Site und geben Sie den Inhalt an die Vorderseite zurück
Rails [Für Anfänger] Implementierung der Kommentarfunktion
So dekorieren Sie CSS auf Rails6 form_with (Hilfs-) Optionsfeldern
Bestätigung und Umgestaltung des Flusses von der Anfrage zum Controller in [httpclient]
(Für Anfänger) [Rails] Zeitsparende Technik! So installieren und verwenden Sie slim
[Rails] Die Ursache dafür, dass nicht gepostet werden konnte, war in form_with
Schaltfläche [Schienen], um zum Anfang der Seite zurückzukehren
Ich habe versucht, die Sitzung in Rails zu organisieren
Vergleichen Sie die Geschwindigkeit der for-Anweisung und der erweiterten for-Anweisung.
[Für Anfänger] So implementieren Sie die Löschfunktion
Führen Sie Docker in die Entwicklungs- und Testumgebung vorhandener Rails- und MySQL-Apps ein
[Einführung in Java] Grundlagen der Java-Arithmetik (für Anfänger)
Für diejenigen, die MySQL für die Datenbank in der Umgebungskonstruktion von Rails6 ~ verwenden möchten.
Bibliothek nicht geladen, wenn versucht wird, die Ruby-Version und die Schienen zu aktualisieren
[Grobe Erklärung] So trennen Sie den Betrieb der Produktionsumgebung und der Entwicklungsumgebung mit Rails
Eine Überprüfung des von Rails-Anfängern verwendeten Codes
Konvertieren Sie das Array von error.full_messages in Zeichen und geben Sie es aus
Verstehen Sie die Eigenschaften von Scala in 5 Minuten (Einführung in Scala)
[Rails] So ändern Sie den Spaltennamen der Tabelle
In der Abbildung verstandene Java-Klassen und -Instanzen
Einführung in Java für Anfänger Grundkenntnisse der Java-Sprache ①
Java Häufig verwendete Anweisungsliste (für Anfänger und Anfänger)
[Rails] So erhalten Sie den Inhalt starker Parameter
Etwa der Ablauf der Entwicklung von Webanwendungen mit Rails.
Erklärung von Ruby auf Schienen für Anfänger ⑥ ~ Erstellung der Validierung ~
Erklärung von Ruby on Rails für Anfänger ② ~ Links erstellen ~
Erklärung von Ruby on Rails für Anfänger ⑦ ~ Flash-Implementierung ~
[Rails] Vollständig verstanden form_with
[Für Anfänger] Erläuterung von Klassen, Instanzen und Statik in Java
Ich habe das Verhalten von Java Scanner und .nextLine () nicht wirklich verstanden.
Verstehen Sie den groben Fluss von der Anforderung zur Antwort in SpringWebMVC
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Befehl zum Überprüfen der Anzahl und des Status von Java-Threads
[Verfahren 1 für Anfänger] Ruby on Rails: Aufbau einer Entwicklungsumgebung
Java-Anfänger fassten das Verhalten von Array und ArrayList kurz zusammen
Hier sind einige Artikel, auf die sich Anfänger in der Programmierung bezogen haben.
[Rails] So zeigen Sie eine Liste der Beiträge nach Kategorie an
Erklärung von Ruby on Rails für Anfänger ③ ~ Erstellen einer Datenbank ~
Optionen für neue Schienen und Einstellungen, die nach neuen Schienen vorgenommen werden müssen
Tutorial zum Erstellen eines Blogs mit Rails für Anfänger Teil 2
[Rails] Bei der Beschreibung der Validierung ist Vorsicht geboten
Wiedereinführung in Java for Humanities 0: Den Akt der Programmierung verstehen
Ein grundlegendes Verständnis des Flusses der rekursiven Verarbeitung anstreben
Tutorial zum Erstellen eines Blogs mit Rails für Anfänger Teil 0