(Ruby on Rails6) Refléter le contenu publié à partir du formulaire

Spécifications de la machine

· Version 10.15.3 ・ Rubis rubis 2.6.3p62 ・ Rails 6.0.3.2

Préface

Dans ci-dessus , nous avons enregistré comment afficher la base de données qui a obtenu l'identifiant de la base de données. Ici, nous enregistrerons sous forme de mémorandum comment refléter le contenu de la base de données publié à partir du formulaire dans la vue. Le rooding est compliqué et difficile ...

Refléter le contenu publié à partir du formulaire

Ici, nous allons procéder de la création du formulaire dans la vue.

Créer un écran de formulaire

Créez un formulaire simple pour votre vue.

erb:app/views/Tout/Tout.htme.erb


<div class="form">
  <label>title: </label>
  <input type="text">
  <br>
  <label>text: </label>
  <textarea></textarea>
  <input type="submit" value="Publier">
</div>

Créer une action

Créer le formulaire précédent ↓ J'ai défini soumettre </ strong>. Afin de sauvegarder les données saisies dans le formulaire dans la base de données, il est nécessaire de passer par l'action (contrôleur) en cliquant sur soumettre.

erb:app/views/Tout/Tout.htme.erb


  <input type="submit" value="Publier">

Remplissez les itinéraires ci-dessous

config/routes.rb


 ‥
  post "Nom du contrôleur/Nom de l'action" => "Nom du contrôleur#Nom de l'action"

Exemple ↓

config/routes.rb


 ‥
  post "posts/create" => "posts#create"

À propos des éléments

config/routes.rb


  get "Nom du contrôleur/Nom de l'action" => "Nom du contrôleur#Nom de l'action"
  post "Nom du contrôleur/Nom de l'action" => "Nom du contrôleur#Nom de l'action"

Il y a get ・ post </ strong> dans les itinéraires de ↑. S'il s'agit du paramètre de routage de page, get est très bien. Cependant, si vous souhaitez obtenir la valeur du formulaire </ strong>, vous devez publier </ strong>.

se soumettre à l'action

Vous devez définir la méthode form_tag </ strong> pour envoyer des données au formulaire.

(méthode form_tag) Avant de définir ↓

rb:app/views/Tout.html.erb


<div class="form">
  <label>title: </label>
  <input type="text">
  <br>
  <label>text: </label>
  <textarea></textarea>
  <input type="submit" value="Publier">
</div>

(méthode form_tag) Après avoir défini ↓

rb:app/views/Tout.html.erb


<%= form_tag("/Nom du contrôleur/Nom de l'action") do %>
 <div class="form">
   <label>title: </label>
   <input type="text">
   <br>
   <label>text: </label>
   <textarea></textarea>
   <input type="submit" value="Publier">
 </div>
<% end %>

Je l'ai mis avec <% = form_tag ("/ posts / create") do%> ‥ <% end%> </ strong>. De plus, la méthode form_tag devient ↓.

rb:app/views/Tout.html.erb


<%= form_tag("/Nom du contrôleur/Nom de l'action") do %>
En traitement
<% end %>

Rediriger les paramètres

Dans le travail jusqu'à maintenant ・ Création d'un formulaire -Soumettre de la forme à l'action Le nous. Ici, pour afficher les données envoyées, configurez pour rediriger vers la page (liste) correspondante.

Utilisez la méthode redirect_to </ strong> pour configurer une redirection.

app/controllers/Tout_controller.rb


‥

def create
    redirect_to("/Nom du contrôleur/Nom de l'action")
end

Exemple ↓

app/controllers/Tout_controller.rb


‥

def create
    redirect_to("/posts/index")
end

Envoyer et enregistrer les données d'entrée dans la base de données

Vérifiez le formulaire que vous avez défini précédemment.

rb:app/views/Tout.html.erb


<%= form_tag("/Nom du contrôleur/Nom de l'action") do %>
 <div class="form">
   <label>title: </label>
   <input type="text">
   <br>
   <label>text: </label>
   <textarea></textarea>
   <input type="submit" value="Publier">
 </div>
<% end %>

Les données d'entrée ne peuvent pas être envoyées pour les deux ↓ décrites ici telles quelles.

  • 2 (zone de saisie / texte)

rb:app/views/Tout.html.erb


<%= form_tag("/Nom du contrôleur/Nom de l'action") do %>
   <input type="text">
   <textarea></textarea>
<% end %>

Définissez l ' attribut de nom </ strong> pour autoriser l'envoi.

↓ définition de l'attribut de nom

rb:app/views/Tout.html.erb


<%= form_tag("/Nom du contrôleur/Nom de l'action") do %>
   <input name="title" type="text">
   <textarea name="content"></textarea>
<% end %>

Pour le paramètre d'attribut de nom, définissez le nom de la colonne lors de la création de la base de données. J'ai mis "titre et texte".

En définissant l'attribut name et en l'envoyant, un hachage avec la valeur de l'attribut name comme clé est envoyé à l'action.

Ensuite, associons l '"attribut de nom" au contrôleur d'action.

paramètre d'attribut de nom et variable "params"

Dans le formulaire précédent, j'ai défini l'attribut de nom pour qu'il puisse être envoyé à l'action du contrôleur. Ensuite, réglez le contrôleur sur params </ strong> pour recevoir les données soumises dans le formulaire. Les paramètres </ strong> sont des paramètres qui reçoivent des valeurs telles que les données de formulaire et link_to. Dans les vues ci-dessus, j'ai lié les données à la balise