--Verwenden Sie die Methode form_with ordnungsgemäß
$ rails -v
Rails 6.0.3.1
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]
Es ist eine Methode, die UI-Teile zum Senden von Formularen erstellt und die Funktion zum automatischen Umschalten von Controller-Aktionen auf der Serverseite bietet.
Die Faktoren für das Umschalten variieren in Abhängigkeit von den Werten für das optionale Modell und die URL und sind wie folgt.
Möglichkeit | @Inhalt des Benutzers | Aktion, die aufgerufen werden soll | Verwenden |
---|---|---|---|
model: @user | User.new | create | Benutzer erstellt |
model: @user | User.find() | update | Benutzer bearbeiten |
url: sessions_path | create | Benutzer-Anmeldung |
Darüber hinaus ist der Unterschied zwischen den Optionen wie folgt.
Möglichkeit | Attribut für den Namen des Eingabebereichs | Starke Parameter |
---|---|---|
model: @user | name="user[email]" | params.require(:user).permit(:email) |
url: users_path | name="email" | params.permit(:email) |
.erb
<%= form_with model: @user do |f| %>
<%= f.label :name, "Name" %>
<%= f.text_field :name, placeholder: "Yamada" %>
<%= f.submit "zu registrieren" %>
<% end %>
.erb
<%= form_with url: sessions_path do |f| %>
<%= f.label :name, "Name" %>
<%= f.text_field :name, placeholder: "Yamada" %>
<%= f.submit "Anmeldung" %>
<% end %>
Tatsächlich ist die Option `` `remote: true``` standardmäßig angegeben und für die Durchführung der sogenannten Ajax-Kommunikation voreingestellt. Wenn nichts festgelegt ist, wird Flash möglicherweise nicht angezeigt, da die Rendermethode nicht ausgeführt wird.
Das obige Problem kann gelöst werden, indem die folgenden Einstellungen für die normale HTTP-Kommunikation vorgenommen werden.
.erb
<%= form_with model: @user, local: true do |form| %>
form_with ist praktisch, da es automatisch den Typ der HTTP-Anforderung bestimmt.
Recommended Posts