--Utilisation correcte de la méthode form_with
$ rails -v
Rails 6.0.3.1
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]
Il s'agit d'une méthode qui crée des parties de l'interface utilisateur pour soumettre des formulaires et qui a la fonctionnalité de basculer automatiquement les actions du contrôleur côté serveur.
Les facteurs de changement varient en fonction des valeurs du modèle facultatif et de l'URL et sont les suivants.
option | @Contenu de l'utilisateur | Action à appeler | Utilisation |
---|---|---|---|
model: @user | User.new | create | Utilisateur créé |
model: @user | User.find() | update | Modifier l'utilisateur |
url: sessions_path | create | Utilisateur en ligne |
De plus, la différence entre les options est la suivante.
option | Attribut de nom de zone d'entrée | Paramètres forts |
---|---|---|
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, "Nom" %>
<%= f.text_field :name, placeholder: "Yamada" %>
<%= f.submit "s'inscrire" %>
<% end %>
.erb
<%= form_with url: sessions_path do |f| %>
<%= f.label :name, "Nom" %>
<%= f.text_field :name, placeholder: "Yamada" %>
<%= f.submit "s'identifier" %>
<% end %>
En fait, l'option `` remote: true '' est donnée par défaut, et elle est prédéfinie pour effectuer ce que l'on appelle la communication Ajax. Par conséquent, si rien n'est défini, flash peut ne pas s'afficher car la méthode de rendu n'est pas exécutée.
Le problème ci-dessus peut être résolu en définissant les paramètres suivants pour une communication HTTP normale.
.erb
<%= form_with model: @user, local: true do |form| %>
form_with est pratique car il détermine automatiquement le type de requête HTTP.
Recommended Posts