Je n'ai pas beaucoup compris pendant l'étude, j'aimerais donc l'organiser tout en le produisant. J'écrirai attentivement à partir des bases. Si vous indiquez, s'il vous plaît.
En premier lieu, rails a une méthode pour faire apparaître les balises HTML dans la vue et traiter le texte à l'avance. Celles-ci sont appelées méthodes d'assistance. form_with est un type de méthode d'assistance.
Une méthode d'aide pour l'implémentation de formulaire qui a été recommandée depuis la version appelée Rails 5.1. form_tag / form_for semble être obsolète. (L'explication de ces deux méthodes est omise.)
.erb
<!-- form_Exemple d'utilisation de balise-->
<%= form_tag('/posts', method: :post) do %>
<input type="text" name="content">
<input type="submit" value="Publier">
<% end %>
.erb
<!--form_Exemple d'utilisation avec-->
<%= form_with model: @post, local: true do |form| %>
<%= form.text_field :content %>
<%= form.submit 'Publier' %>
<% end %>
La fonctionnalité de form_with est (1) Le chemin est automatiquement sélectionné et il n'est pas nécessaire de spécifier la méthode HTTP. (2) Une instance du modèle qui hérite d'ActiveRecord passé du contrôleur peut être utilisée (@post correspond à celle ci-dessus)
Dans ce cas, ① Pour les nouveaux messages ② Lors de l'appel d'un message existant Le traitement changera avec.
posts_controller.rb
def new
@post = Post.new
end
Cliquez sur le bouton de publication et il sera envoyé à l'action de création.
new.html.erb
<%= form_with model: @post, class: :form, local: true do |form| %>
<%= form.text_field :title, placeholder: :Titre, class: :form__title %>
<%= form.text_area :content, placeholder: :Corps du blog, class: :form__text %>
<%= form.submit 'Publier', 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: :Titre, class: :form__title %>
<%= form.text_area :content, placeholder: :Corps du blog, class: :form__text %>
<%= form.submit 'Publier', class: :form__btn %>
<% end %>
Cliquez sur le bouton de publication et il sera envoyé à l'action de mise à jour.
Par comparaison, les parties de formulaire de new.html.erb et edit.html.erb sont les mêmes! !! !! Par conséquent, la partie de formulaire peut être transformée en un modèle partiel et la quantité de description peut être réduite. Il déterminera automatiquement si le modèle @post a du contenu et vous l'enverra.
mis-à-part Vous pouvez transmettre plusieurs modèles, par exemple form_with model: [@ post, @ comment]. J'aimerais l'écrire dans un autre article ...
Recommended Posts