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 ~
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.
De plus, css est spécifié comme suit.
users.scss
.ruby-name {
color: purple;
display: inline-block;
font-weight: bold;
}
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 %>
J'ai pu supprimer l'élément en cliquant sur le bouton Supprimer.
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.
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.
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.
Ce sera comme suit.
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.
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.
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