[RUBY] Automatische Zuweisung von Namens- und ID-Attributen durch form_with

Betriebsumgebung Ruby 2.6.5 Rails 6.0.3.2

Wenn ich form_with verwendet habe, habe ich oft einen Fehler gemacht, ohne zu bemerken, dass das Namensattribut und das ID-Attribut automatisch zugewiesen wurden, also habe ich es gepostet.

Spezifisches Beispiel, bei dem das Modell in form_with angegeben wird und das Namensattribut und das ID-Attribut automatisch zugewiesen werden

ruby:new.html.erb


<%= form_with model: @hoge, local: true do |f| %>
  <%= f.text_field :fuga %>
  <%= f.submit "Post" %>
<% end %>

Wie oben erwähnt, lautet das Modell, wenn Sie das Modell als @hoge angeben und das Namensattribut und das ID-Attribut mit dem Überprüfungstool überprüfen, ** name = "hoge [fuga]", id = "hoge_fuga" **. Obwohl der Name und die ID nicht angegeben sind, werden die Namen- und ID-Attribute automatisch hinzugefügt.

Im vorherigen Code wurde gesagt, dass wenn Sie das Namensattribut und das ID-Attribut nicht angeben, diese automatisch zugewiesen werden. Lassen Sie uns jedoch sehen, was passiert, wenn Sie das Namensattribut und das ID-Attribut angeben.

Spezifisches Beispiel für die Angabe des Namensattributs und des ID-Attributs mit form_with

ruby:new.html.erb


<%= form_with model: @hoge, local: true do |f| %>
  <%= f.text_field :fuga, name:"hogera", id:"piyo" %>
  <%= f.submit "Post" %>
<% end %>

Wenn Sie das Namensattribut und das ID-Attribut mit dem Überprüfungstool überprüfen, lautet dies wie zuvor ** name = "hogera", id = "piyo" **. Das heißt, die Namens- und ID-Attribute sind wie angegeben.

Als nächstes wollen wir sehen, was passiert, wenn wir die URL angeben, anstatt das Modell anzugeben.

Spezifisches Beispiel, bei dem URL in form_with angegeben wird und Namensattribut und ID-Attribut automatisch zugewiesen werden

ruby:new.html.erb


<%= form_with url: hoges_path, local: true do |f| %>
  <%= f.text_field :fuga %>
  <%= f.submit "Post" %>
<% end %>

Wenn Sie das Namensattribut und das ID-Attribut mit dem Überprüfungstool überprüfen, lautet dies nach wie vor ** name = "fuga", id = "fuga" **. Hierbei ist zu beachten, dass sich die Namen- und ID-Attribute von den Angaben zum Modell unterscheiden. Wenn die Aktion, die Sie auf dem Controller ausführen möchten, identisch ist, ändert sich das Ergebnis grundsätzlich nicht, ob Sie Modell oder URL angeben, aber das Namensattribut und das ID-Attribut unterscheiden sich.

Wenn Sie sowohl das Modell als auch die URL angeben, sind die Attribute name und id übrigens dieselben wie bei der Angabe des Modells.

Ich war überrascht, als ich dies erfuhr, weil ich dachte, dass die Namens- und ID-Attribute nur gewährt werden würden, wenn sie angegeben würden. Früher habe ich das Namensattribut mit JavaScript abgerufen, aber zu diesem Zeitpunkt hatte ich stundenlang mit dem Fehler zu kämpfen, ohne den Unterschied zwischen dem Namensattribut bei der Angabe des Modells und der Angabe der URL zu bemerken. Es gab einen Fall, dass es enden würde.

Ist es nicht besser, von Anfang an sowohl das Namensattribut als auch das ID-Attribut anzugeben, um einen solchen Fehler zu vermeiden? Ich dachte, aber in erster Linie wird es automatisch angegeben, um die Anzahl der Beschreibungen zu reduzieren. Es scheint also, dass ich die automatisch angegebene häufig verwende, ohne sie selbst anzugeben.

Recommended Posts

Automatische Zuweisung von Namens- und ID-Attributen durch form_with
Holen Sie sich die ID der automatischen Nummerierung
Einführung und Vorsichtsmaßnahmen von gem Friendly Id
Ruft den Klassennamen und den Methodennamen des Controllers ab, der vom HandlerInterceptor von Spring Boot ausgeführt wird