Ich habe während des Studiums nicht viel verstanden, daher möchte ich es während der Ausgabe organisieren. Ich werde sorgfältig von den Grundlagen schreiben. Wenn Sie darauf hinweisen, bitte.
Erstens verfügt Rails über eine Methode, mit der HTML-Tags in der Ansicht angezeigt und Text im Voraus verarbeitet werden können. Diese werden als Hilfsmethoden bezeichnet. form_with ist eine Art Hilfsmethode.
Dies ist eine Hilfsmethode für die Formularimplementierung, die seit der Version mit dem Namen Rails 5.1 empfohlen wurde. form_tag / form_for scheint veraltet zu sein. (Die Erklärung dieser beiden Methoden wird weggelassen.)
.erb
<!-- form_Beispiel mit Tag-->
<%= form_tag('/posts', method: :post) do %>
<input type="text" name="content">
<input type="submit" value="Post">
<% end %>
.erb
<!--form_Beispiel mit-->
<%= form_with model: @post, local: true do |form| %>
<%= form.text_field :content %>
<%= form.submit 'Post' %>
<% end %>
Das Merkmal von form_with ist (1) Der Pfad wird automatisch ausgewählt und die HTTP-Methode muss nicht angegeben werden. (2) Eine Instanz des Modells, die ActiveRecord erbt, das vom Controller übergeben wurde, kann verwendet werden (@post entspricht dem oben genannten).
In diesem Fall, ① Für neue Beiträge ② Wenn Sie einen vorhandenen Beitrag anrufen Die Verarbeitung ändert sich mit.
posts_controller.rb
def new
@post = Post.new
end
Klicken Sie auf die Schaltfläche "Post" und sie wird an die Aktion "Erstellen" gesendet.
new.html.erb
<%= form_with model: @post, class: :form, local: true do |form| %>
<%= form.text_field :title, placeholder: :Titel, class: :form__title %>
<%= form.text_area :content, placeholder: :Blog Körper, class: :form__text %>
<%= form.submit 'Post', class: :form__btn %>
<% end %>
posts_controller.rb
def edit
@post = Post.find(params[:id])
end
edit.html.erb
<%= form_with model: @post, class: :form, local: true do |form| %>
<%= form.text_field :title, placeholder: :Titel, class: :form__title %>
<%= form.text_area :content, placeholder: :Blog Körper, class: :form__text %>
<%= form.submit 'Post', class: :form__btn %>
<% end %>
Klicken Sie auf die Schaltfläche "Posten" und es wird an die Aktualisierungsaktion gesendet.
Im Vergleich dazu sind die Formteile von new.html.erb und edit.html.erb identisch! !! !! Daher kann das Formteil zu einer Teilvorlage gemacht werden und der Umfang der Beschreibung kann reduziert werden. Es wird automatisch festgestellt, ob das Modell @post Inhalt hat, und es wird an Sie gesendet.
Außerdem Sie können mehrere Modelle übergeben, z. B. form_with model: [@ post, @ comment]. Ich denke, ich sollte es in einem anderen Artikel schreiben ...
Recommended Posts