Viele Leute werden ihr Lernen von Progate auf Rails-Tutorials verlagern.
Formbezogen ist selbst in Progate schwierig. Es ist wirklich schwierig, sich mit dem Formular zu registrieren oder anzumelden.
Progate ist jedoch immer noch leicht verständlich geschrieben.
Erstellen Sie ein Formular mit form_tag, senden Sie Daten mit
Als ich jedoch anfing, Rails ernsthaft zu lernen, hörte ich auf, form_tag zu verwenden und form_with zu verwenden. In diesem Bereich nimmt die Anzahl der Rails-Beschreibungen stark ab. Der Grad des Verständnisses wird ebenfalls drastisch reduziert.
Dieser Artikel richtet sich an Personen, die einer Lernroute wie dem Rails-Tutorial von Progate folgen und form_with einfach nicht verstehen können.
Ich werde schreiben, während ich vergleiche, wie man Progate schreibt und wie man Rails schreibt.
Zusammenfassend denke ich, dass der Schreibstil von Progate auf einen "konsistenten Schreibstil" für Anfänger abzielt. Ursprünglich wird bei einer Änderung in der Datenbank form_tag
nicht verwendet. Verwenden Sie form_for
.
Wenn Sie es mit `` `form_tag``` implementieren, das häufig in Progate verwendet wird, ist es sehr handgemacht.
Was den Fluss betrifft,
<%= form_tag("/users/create") do %>
<p>Nutzername</p>
<input name="name" value="<%= @user.name %>">
<p>Mail Adresse</p>
<input name="email" value="<%= @user.email %>">
<input type="submit" value="Anmelden">
<% end %>
Legen Sie den Pfad mit form_tag fest. Legen Sie den Pfad zu / users / create fest. Zu diesem Zeitpunkt im Routing (route.rb),
Das steht geschrieben, nicht wahr? Daher wird die Erstellungsaktion in users_controller.rb ausgelöst. Der Inhalt der Erstellungsaktion lautet wie folgt.
def create
@user = User.new(name: params[:name], email: params[:email])
if @user.save
flash[:notice] = "Die Benutzerregistrierung ist abgeschlossen"
redirect_to("/users/#{@user.id}")
else
render("users/new")
end
end
Es sieht aus wie das.
Der Fluss ist leicht zu erfassen, nicht wahr? Ich erhalte das, was ich aus dem Formular gesendet habe, als Parameter und speichere es mit @ user.save, damit ich jedes logisch verstehen kann.
Wenn Sie von hier aus mit dem Rails-Tutorial fortfahren, verwenden Sie form_tag
nicht mehr.
Dies liegt daran, dass die Art und Weise, wie Progate geschrieben wird, außergewöhnlich ist.
Ich benutze kein Progate.
form_tag
wird nicht verwendet, wenn Sie sich neu in der Datenbank registrieren, bearbeiten oder löschen.
Verwenden Sie beim Bearbeiten der Datenbank form_for
.
Nehmen Sie als Modell ein Modellobjekt (ein Objekt (eine Instanz), das basierend auf dem Benutzermodell erstellt wurde, z. B. @ user = User.new).
Zum Zeitpunkt von form_tag
war es mühsam, ID-Informationen von: id abzurufen, den Datensatz aus der Datenbank zu finden und diese Informationen zu bearbeiten.
Es gab einen solchen Prozess.
Das Tolle an Rails ist jedoch, dass @user auch automatisch eine Benutzer-ID hat.
Rails ist also stark schwarzboxig
Geben Sie das Ziel mit form_tag an.
Sie haben form_tag verwendet, wenn Sie formularbezogene Helfer in Ruby on Rails in Progate verwendet haben.
Zu dieser Zeit blieb ich in der Unterlassung stecken. Progate schreibt sowieso alles. Bilden
form_with
ist eine Kombination aus form_tag
und form_for
.
form_tag hat den Pfad angegeben.
form_for hat ein Modellobjekt angegeben (eine aus einem Modell erstellte Instanz).
Es ist "form_with", dass Sie beide verwenden können.
form_tag
<%= form_tag 'Pfad' do %>
<Eingabe ...
<Eingabe ...
<% end %>
Im Gegensatz zum Schreiben
form_for ist
<%= form_for(@user) do |f| %>
<%= f.text_field :name %>
<%= f.submit %>
<% end %>
Wie Sie sehen, ist es ärgerlich, anders zu schreiben, obwohl das Formular ähnlich ist. Indem alle form_with erstellt und versucht wurde, den Schreibstil zu vereinheitlichen, wurde er eins.
Diejenigen, die Progate gelernt haben, haben jedoch form_tag gelernt
"Was? Ist es ein Modell als Argument der Form?"
Ich bin verwirrt. Wir haben die Aktion festgelegt und sind gekommen.
Das Tolle daran ist, dass form_with model: @ user
und model egoistisch sind.
Wenn Sie dies mit form_tag tun, haben Sie die Aktion angegeben.
<% = form_tag (" / users / create ") do%>
Dies ist der Teil. Die Erstellungsaktion wird angegeben.
Beim Schreiben des Modells: @user,
Wenn Sie sich als neuer Benutzer registrieren, Es wird eine neue Aktion aufgerufen
Auf diese Weise wird die Aktion geändert, die mit Vorsicht aufgerufen werden soll. Rails bietet viele Funktionen, mit denen Sie Zeit und Mühe sparen.
Zunächst erhalten Sie: ID-Informationen von der URL. Identifizieren Sie dann den Benutzer anhand der ID-Informationen
Dies: Das gesamte Abrufen der ID ist nicht erforderlich. Tatsächlich erledigt Rails alles automatisch. Progate hat jedoch beim ersten Lernen alles übersprungen.
"Ich bin nicht sicher, aber Rails wird alles tun."
Es ist schwer zu verstehen, deshalb erklärt er es gut.
-Form_tag wird verwendet, wenn keine Änderung in der Datenbank vorliegt ・ Form_for wird beim Erstellen eines Formulars verwendet, bei dem die Datenbank aktualisiert wird. ・ Form_with kann beide Rollen spielen
Rails ist sehr aufmerksam. Es wird verschiedene Dinge ohne Erlaubnis tun.
"Ich habe es endlich getan, ohne es zu erfahren."
Ich werde sagen. Aber am Anfang
"Warum hast du das entschieden?"
Sie fragen sich vielleicht. Ich bin immer noch verwirrt von Rails Witz.
Ich glaube jedoch nicht, dass es etwas Bequemeres und Zuverlässigeres gibt, wenn Sie es beherrschen können. Lassen Sie uns unser Bestes geben, damit wir es meistern können.
Recommended Posts