[RUBY] Nouvel ingénieur qui servira en 100 jours (4e jour)

Nouvel ingénieur qui servira en 100 jours (4e jour)

Cliquez ici pour l'article de l'autre jour Nouvel ingénieur qui en sera un dans 100 jours (3e jour)

Bonsoir. Le week-end est déjà terminé. Je vais également le mettre à jour aujourd'hui. Je n'ai pas beaucoup écrit sur Rails jusqu'à présent Aujourd'hui, je vais écrire sur Rails Form.

Forme des rails

J'ai appris qu'il en existe plusieurs types. C'est une bonne opportunité, alors je vais essayer de la mettre en place.

form_for form_tag form_with

Ces trois. Pour le moment, essayez d'écrire comme indiqué dans le didacticiel J'avais l'impression que cela fonctionnait, mais je pensais que cela ne fonctionnerait pas, alors je vais l'examiner un par un.

form_for Si un modèle associé est préparé, passez le modèle avec form_for.

<%= form_for @user do |form| # @Passer une variable d'instance appelée user%>
  <%= form.text_field :email #Utilisez le formulaire créé à partir du modèle reçu%>
  <%= form.submit %>
<% end %>

Dans ce cas, le modèle associé est @user Cela signifie que ce modèle est lié au formulaire.

form_tag S'il n'y a pas de modèle pertinent

<%= form_tag users_path do # user_Passer un URI appelé chemin%>
  <%= text_field_tag :email %>
  <%= submit_tag %>
<% end %>

Quelque chose comme ça. Nous transmettons l'url au formulaire sous la forme de users_path. Cela signifie que vous envoyez des paramètres.

form_with Eh bien, vous devez en utiliser deux correctement. Le format de ce formulaire a été créé en disant cela. Les deux sont pris en charge. Donc, dans Rails 5.1 et versions ultérieures, il semble que le formulaire devrait essentiellement l'utiliser (c'est vrai ...)

Par exemple, s'il existe un modèle associé (form_for ci-dessus)

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

S'il n'y a pas de modèle pertinent

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

Je vois. Il peut être utilisé dans un seul format. De plus, si URL: @user existe dans la base de données, il passe à l'action de mise à jour, et si ce n'est pas le cas, il passe à l'action de création. En d'autres termes, le formulaire jugera s'il s'agit de POST ou de PATCH et l'envoie.

Ceci est incroyable. J'ai été surpris quand je faisais Java!

Le modèle ne doit pas nécessairement correspondre au terrain

<%= form_with model: @user, local: true do |form| %>
  <%= form.text_field :email %>
  <%= form.check_box :send_welcome_email %>
  <%= form.submit %>
<% end %>

Dans ce qui précède, ceci: send_welcome_email ne prend pas en charge le modèle @user, Toujours pas de problème. La valeur peut être récupérée avec les paramètres [: user] [: send_welcome_email]

À propos de local de form_with

<%= form_with model: @user, local: true %>
<% end %>

local: vrai n'est-ce pas? J'avais une question, alors je l'ai recherchée.

Dans form_with, la communication ajax est effectuée dans l'état par défaut. L'option pour l'annuler est locale: true Qu'est-ce que vous avez dit. Hmm. Je n'en suis pas sûr, je vais donc l'examiner ici.

Pour le moment, j'ai écrit les bases de la forme. Fondamentalement, il semble que vous devriez utiliser form_with. Après cela, je lirai la référence et approfondirai mes connaissances.

c'est tout

** 96 jours pour devenir un ingénieur à part entière **

Recommended Posts

Nouvel ingénieur qui servira en 100 jours (5e jour)
Nouvel ingénieur qui servira en 100 jours (6e jour)
Nouvel ingénieur qui servira en 100 jours (4e jour)
Nouvel ingénieur qui servira dans 100 jours (jour 0)
Nouvel ingénieur qui servira en 100 jours (3e jour)
Nouvel ingénieur qui servira en 100 jours (1er jour)
Nouvel ingénieur qui servira en 100 jours (2ème jour)
26e jour d'ingénieur qui deviendra à part entière dans 100 jours
28e jour d'ingénieur qui deviendra à part entière dans 100 jours