Ruby on Rails ubuntu

Que cache le helper form_with dans Rails 5?

Partagez sur:

Dans ce nouveau tutoriel nous allons parler du nouveau helper form_with qui à fait son apparition dans Rails 5.

Dans les versions précédentes

Dans les versions précédentes de Rails, pour faire des formulaires, nous avions à notre disposions deux helpers qui sont : le form_for et le form_tag.

  • Le form_for : nous permettait de créer un formulaire d’ajout et de modification de données, son argument principal était un model, cela veut que pour l’utiliser il faut passer l’instance d’un model comme argument.
  • Le form_tag : contrairement au form_for, le form_tag permettait de créer un des formulaires du type recherche, son argument principal est une route.

Le nouveau venu « form_with »

Avec l’arrivé de Rails 5, ces deux helpers cités un peu haut (form_for et form_tag) sont devenu dépréciés (obsolètes) et un nouveau helper form_with a fait son apparition.

La différence

Comme vous pouvez le voir, nous utilisons le helper field avec form_for, alors que nous ne l’utilisons pas avec form_tag, donc alors le syntax pour les deux formulaires est différent.

Alors , cela n’est pas le cas avec  form_with, techniquement il combine les deux helpers form_for et form_tag

L’utilisation du form_with

On peut utiliser le form_with de deux manière et selon nos besoins

1ère cas : l’utilisation avec un model

On peut l’utiliser avec un model comme argument, dans ce contexte, c’est comme si nous utilisons le form_for. C’est l’utilisation classique pour un formulaire d’ajout et de mise à jour de données.

<%= form_with model: @user do |form| %>
  <%= form.text_field :email %>
  <%= form.submit %>
<% end %>

 

2ème cas : l’utilisation sans un model comme arguments

Dans ce cas, on passe pas un model comme argument, ce cas est similaire à l’utilisation du form_tag, donc approprié pour faire des formulaires de recherche.

<%= form_with url: users_path do |form| %>
  <%= form.text_field :email %>
  <%= form.submit %>
<% end %>

 

Notes: un  formulaire crée avec le helper form_with estt remontés par défaut (remote : true), cela veut dire que les donnés sont envoyés par une requête XHR (Ajax).

Personnellement j’aime c’est fonction, mais si vous voulez désactiver cette fonction il suffit juste de faire « local : true »

Conclusion :

Dans ce tutotiel nous avons decouvrir la difference entre le helper form_with et les helpers form_for et form_tag, mais il faut savoir que ce tutoriel ne traite pas tout le sujet se rapportant au helper form_with, donc pour plus d’informations, vous pouvez vous rendre sur cette page :  http://api.rubyonrails.org/v5.1/classes/ActionView/Helpers/FormHelper.html

LIRE AUSSI: Helpers: Comment inclure les helpers dans un controller dans Rails 5 ?

Auteur : Amos KERNEL


Partagez sur: