Explication de Ruby on rails pour les débutants ⑤ ~ Modifier et supprimer la base de données ~

introduction

Cette fois, c'est la suite de l'article précédent.

Veuillez consulter l'article précédent si vous le souhaitez.

Explication de Ruby sur rails pour les débutants ①

Explication de Ruby on rails pour les débutants ② ~ Création de liens ~

Explication de Ruby on rails pour les débutants ③ ~ Création d'une base de données ~

Explication de Ruby on rails pour les débutants ④ ~ Comment utiliser les règles de nommage et form_Tag ~

Affichage d'une liste de données de base de données

Récupérons les données de la table users et affichons-les avec le code suivant.

index.html.erb


 <% @users.each do |user| %>
   <p>name</p>
   <div class="ruby-name"><%= user.name %></div>
 <% end %>

Passé dans le contrôleur pour utiliser la variable d'instance @users.

users_controller.rb


def index
  @users = User.all
end

L'écran suivant s'affiche.

image.png

De plus, css est spécifié comme suit.

users.scss


.ruby-name {
    color: purple;
    display: inline-block;
    font-weight: bold;
}

Supprimer la base de données

Maintenant, implémentons la suppression de la base de données.

Réécrivez le code comme suit.

index.html.erb


 <% @users.each do |user| %>
   <p>name</p>
   <div class="ruby-name">
     <%= user.name %>
     <%= link_to("Effacer", "/users/#{user.id}/destroy", {method: "post"})%>
   </div>
 <% end %>

image.png

J'ai pu supprimer l'élément en cliquant sur le bouton Supprimer.

image.png

Regardons le traitement spécifique. Le code suivant a été ajouté à index.html.erb.

<%= link_to("Effacer", "/users/#{user.id}/destroy", {method: "post"})%>

Cela entraînera le traitement du deuxième argument lorsque vous cliquez sur Supprimer.

Le deuxième argument, "/users/#{user.id}/destroy", inclut l'ID de la base de données dans le routage vers l'action de destruction du contrôleur des utilisateurs. En spécifiant l'URL de cette manière, le contrôleur peut recevoir l'ID de la base de données que vous souhaitez supprimer.

Le troisième argument spécifie qu'il s'agit d'une demande de publication et non d'une demande d'obtention.

Itinéraire comme suit.

routes.rb


post "users/:id/destroy" => "users#destroy"

La partie: id peut recevoir n'importe quel nombre. Le numéro reçu est stocké dans params [: id] dans le contrôleur des utilisateurs.

Codez le contrôleur comme suit:

users_controller.rb


def destroy
  user = User.find_by(id: params[:id])
  user.destroy
  redirect_to("/users/index")
end

Dans la partie de ʻuser = User.find_by (id: params [: id]) `, les données sont extraites de la base de données en utilisant le modèle. Extrayez les données avec le même identifiant que l'identifiant envoyé depuis index.html.erb de la base de données et stockez-les dans user.

ʻLes données sont supprimées dans la partie de user.destroy`.

Dans la partie redirect_to (" / users / index "), nous redirigeons vers index.html.erb. Cette fois, il sera rechargé car c'est l'opération lorsque le lien de suppression est cliqué dans index.html.erb.

À ce stade, vous avez supprimé avec succès les données de la base de données.

Modifier la base de données

Ensuite, éditons la base de données.

Modifiez ʻindex.html.erb` comme suit:

index.html.erb


 <% @users.each do |user| %>
   <p>name</p>
   <div class="ruby-name">
     <%= user.name %>
     <%= link_to("Effacer", "/users/#{user.id}/destroy", {method: "post"})%>
     <%= link_to("Éditer", "/users/#{user.id}/edit") %>
   </div>
 <% end %>

Nouvellement ajoutée cette fois, la partie <% = link_to (" edit "," / users / # {user.id} / edit ")%>.

Cela vous mènera à un nouveau fichier de vue appelé ʻusers / edit`.

À ce moment-là, vous passerez l'ID de la base de données que vous souhaitez modifier au fichier de vue.

Itinéraire comme suit:

routes.rb


get "users/:id/edit" => "users#edit"

Préparez le fichier de vue suivant dans le chemin suivant. image.png

edit.html.erb


<%= form_tag("/users/#{@user.id}/update") do  %>
  <input type="text" value="<%[email protected]%>" name="new_name">
  <input type="submit" value="Envoyer">
<% end %>

Pour tester, cliquez sur la partie qui dit "Modifier le fichier index.html.erb" ci-dessous. image.png

Ce sera comme suit. image.png

Voici une description du fichier edit.html.erb.

La partie form_tag (" / users / # {@ user.id} / update ") spécifie quelle action du contrôleur utiliser.

Cette fois, nous utiliserons l'action de mise à jour du contrôleur des utilisateurs. De plus, pour modifier la base de données, envoyez l'ID de la base de données que vous souhaitez modifier. form_tag était une demande de publication.

La valeur initiale et le nom de la balise d'entrée sont définis dans la partie de <input type =" text "value =" <% [email protected]%> "name =" new_name ">. @ user est envoyé à partir de l'action d'édition du contrôleur des utilisateurs.

users_controller.rb


def edit
  @user = User.find_by(id: params[:id])
end

@ User contient la valeur trouvée dans la base de données selon l'id.

Maintenant, modifions la valeur comme indiqué ci-dessous et envoyons-la.

image.png

Ensuite, le routage suivant exécutera l'action de mise à jour du contrôleur d'utilisateurs.

routes.rb


post "users/:id/update" => "users#update"

users_controller.rb


def update
  user = User.find_by(id: params[:id])
  user.name = params[:new_name]
  user.save
  redirect_to("/users/index")
end

Dans l'action de mise à jour, recherchez la base de données en fonction de l'ID envoyé, stockez-la dans la variable locale user, réécrivez les données dans la colonne de nom avec le nouveau nom envoyé et enregistrez-la avec ʻuser.save. Après cela, il redirige vers / users / index`.

Par conséquent, il change comme suit.

image.png

À la fin

Ceci est la fin de cet article.

Merci pour votre relation.

Veuillez consulter les articles suivants si vous le souhaitez.

Explication de Ruby on rails pour les débutants ⑥ ~ Création de la validation ~

Explication de Ruby on rails pour les débutants ⑦ ~ Implémentation de flash ~

Recommended Posts

Explication de Ruby on rails pour les débutants ⑤ ~ Modifier et supprimer la base de données ~
Explication de Ruby sur rails pour les débutants ①
Explication de Ruby on rails pour les débutants ③ ~ Création d'une base de données ~
Explication de Ruby sur rails pour les débutants ⑥ ~ Création de validation ~
Explication de Ruby on rails pour les débutants ② ~ Création de liens ~
Explication de Ruby on rails pour les débutants ⑦ ~ Implémentation Flash ~
Explication de Ruby on rails pour les débutants ④ ~ À propos des règles de dénomination et comment utiliser form_Tag ~
[Procédure 1 pour les débutants] Ruby on Rails: Construction d'un environnement de développement
Ruby on Rails ~ Principes de base de MVC et du routeur ~
[Pour les débutants] Explication des classes, des instances et des statiques en Java
(Ruby on Rails6) Affichage de la base de données qui a obtenu l'identifiant de la base de données
Supprimer tout le contenu de la page de liste [Ruby on Rails]
Connaissance de base de Ruby on Rails
(Ruby on Rails6) Créer une base de données et l'afficher dans une vue
[Ruby on Rails] Introduction des données initiales
[Rails] Ajout de la fonction de commentaire Ruby On Rails
Explication des objets Ruby Time et Date
Rails [Pour les débutants] Implémentation de la fonction de commentaire
Commande de création / suppression du contrôleur Ruby on Rails
[Ruby on Rails] Notation japonaise de l'erreur
[Ruby on rails] Implémentation d'une fonction similaire
Débutant a créé un portfolio avec Ruby on Rails
[Rails] Articles pour les débutants pour organiser et comprendre le flux de form_with
Paramètres de validation pour la fonction de connexion Ruby on Rails
Implémentation de la fonction de connexion Ruby on Rails (Session)
[Ruby on Rails] Jusqu'à l'introduction de RSpec
Recommandation de classe de service dans Ruby on Rails
[Ruby on Rails] Un mémorandum de modèles de mise en page
[Rails] Procédure de liaison de bases de données avec Ruby On Rails
[Ruby on Rails] Fonction de post-édition (mise à jour, suppression)
[Ruby on Rails] Affichage individuel des messages d'erreur
[Ruby on Rails] Ajoutez et supprimez des balises et affichez les messages (succès / erreur) en utilisant ajax.
[Ruby on Rails] Communication asynchrone de la fonction de publication, ajax
[Pour les débutants] DI ~ Les bases de DI et DI au printemps ~
Implémentation de la fonction de connexion Ruby on Rails (édition de devise)
[Ruby on Rails] Supprimer les images s3 avec Active Strage
[Ruby On Rails] Causes et remèdes pour ActionView :: Template :: Error (ActiveStorage :: InvariableError) (hypothèse / vérification)
Ruby on Rails élémentaire
Principes de base de Ruby on Rails
Liste des instructions Java fréquemment utilisées (pour les débutants et les débutants)
Association Ruby On Rails
[Ruby on Rails] De la construction de MySQL au changement de base de données
(Ruby on Rails6) Comment créer un modèle et une table
Essayez d'utiliser l'attribut de requête Ruby on Rails
<Pour les super débutants> Pourquoi ne créez-vous pas un chat bot en utilisant "Talk API"? ?? [Ruby on Rails]
[Ruby on Rails] Seul l'utilisateur qui a publié peut modifier
[Ruby on Rails] Élimination de Fat Controller-First, logic to model-