[RUBY] Neuer Ingenieur, der in 100 Tagen (4. Tag) eine sein wird

Neuer Ingenieur, der in 100 Tagen (4. Tag) eine sein wird

Klicken Sie hier für den Artikel des anderen Tages Neuer Ingenieur, der in 100 Tagen (3. Tag) eine sein wird

Guten Abend. Das Wochenende ist schon vorbei. Ich werde es auch heute aktualisieren. Ich habe bisher nicht viel über Rails geschrieben Heute werde ich über Rails Form schreiben.

Schienen bilden

Ich habe gelernt, dass es verschiedene Arten gibt. Es ist eine gute Gelegenheit, also werde ich versuchen, sie zusammenzustellen.

form_for form_tag form_with

Diese drei. Versuchen Sie vorerst, wie im Tutorial beschrieben zu schreiben Ich hatte das Gefühl, dass es funktioniert, aber ich dachte, es würde nicht funktionieren, also werde ich es mir einzeln ansehen.

form_for Wenn ein verwandtes Modell vorbereitet ist, übergeben Sie das Modell mit form_for.

<%= form_for @user do |form| # @Übergabe einer Instanzvariablen namens user%>
  <%= form.text_field :email #Verwenden Sie das aus dem empfangenen Modell erstellte Formular%>
  <%= form.submit %>
<% end %>

In diesem Fall ist das zugehörige Modell @user Dies bedeutet, dass dieses Modell mit dem Formular verknüpft ist.

form_tag Wenn es kein relevantes Modell gibt

<%= form_tag users_path do # user_Übergeben einer URI namens Pfad%>
  <%= text_field_tag :email %>
  <%= submit_tag %>
<% end %>

Etwas wie das. Wir übergeben die URL in Form von users_path an das Formular. Dies bedeutet, dass Sie Parameter senden.

form_with Nun, Sie müssen zwei richtig verwenden. Das Format dieses Formulars wurde dadurch erstellt. Beide werden unterstützt. In Rails 5.1 und höher scheint es, dass die Form dies grundsätzlich verwenden sollte (das ist richtig ...)

Zum Beispiel, wenn es ein verwandtes Modell gibt (form_for oben)

<%= form_with model: @user do |form| %>
  <%= form.text_field :email %>
  <%= form.submit %>
<% end %>

Wenn es kein relevantes Modell gibt

<%= form_with url: users_path do |form| %>
  <%= form.text_field :email %>
  <%= form.submit %>
<% end %>

Aha. Es kann in einem Format verwendet werden. Wenn URL: @user in der Datenbank vorhanden ist, springt es zur Aktualisierungsaktion, andernfalls springt es zur Erstellungsaktion. Mit anderen Worten, das Formular beurteilt, ob es sich um POST oder PATCH handelt, und sendet es.

Das ist großartig. Ich war überrascht, als ich Java machte!

Das Modell muss nicht dem Feld entsprechen

<%= form_with model: @user, local: true do |form| %>
  <%= form.text_field :email %>
  <%= form.check_box :send_welcome_email %>
  <%= form.submit %>
<% end %>

Oben: send_welcome_email unterstützt das @ user-Modell nicht. Immer noch kein Problem. Der Wert kann mit params [: user] [: send_welcome_email] abgerufen werden.

Über local von form_with

<%= form_with model: @user, local: true %>
<% end %>

local: stimmt das nicht? Ich hatte eine Frage und habe sie nachgeschlagen.

In form_with wird die Ajax-Kommunikation im Standardzustand ausgeführt. Die Option zum Abbrechen ist lokal: true Was hast du gesagt. Hmm. Ich bin mir nicht sicher, also werde ich es hier überprüfen.

Vorerst habe ich die Grundlagen der Form geschrieben. Grundsätzlich scheint es, dass Sie mit form_with gehen sollten. Danach werde ich die Referenz lesen und mein Wissen vertiefen.

das ist alles

** 96 Tage, um ein vollwertiger Ingenieur zu werden **

Recommended Posts

Neuer Ingenieur, der in 100 Tagen (5. Tag) eine sein wird
Neuer Ingenieur, der in 100 Tagen (6. Tag) eine sein wird
Neuer Ingenieur, der in 100 Tagen (4. Tag) eine sein wird
Neuer Ingenieur, der in 100 Tagen einer sein wird (Tag 0)
Neuer Ingenieur, der in 100 Tagen (3. Tag) eine sein wird
Neuer Ingenieur, der in 100 Tagen (1. Tag) eine sein wird
Neuer Ingenieur, der in 100 Tagen (2. Tag) eine sein wird
26. Tag des Ingenieurs, der in 100 Tagen vollwertig sein wird
28. Tag des Ingenieurs, der in 100 Tagen vollwertig sein wird