Explication de Ruby on rails pour les débutants ④ ~ À propos des règles de dénomination et comment utiliser form_Tag ~

introduction

Cette fois, c'est une continuation 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 sur 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 ~

À propos des conventions de dénomination de Rails

Jusqu'à présent, nous avons créé des contrôleurs et des modèles.

Ils ont des conventions de dénomination. Apprenons.

Convention de dénomination du modèle

Un modèle est un dessin de conception permettant de créer une base de données.

Puisqu'il n'y a qu'un seul dessin de conception, créez le nom de la classe de modèle sous une forme unique.

Le tableau est automatiquement représenté au pluriel car il contient plusieurs données pour ce modèle.

Dans l'article précédent, j'ai créé un modèle avec le nom «utilisateur».

Cela créera une table avec le nom «utilisateurs».

De plus, le nom de la classe est en majuscule au début, comme ʻUser`.

Afficher la convention de dénomination

Le dossier View contient plusieurs fichiers, il s'agit donc d'un «pluriel».

Convention de dénomination du contrôleur

Puisque Controller a plusieurs actions, créez-le avec plural.

Enregistrer les données dans la base de données

Dans l'article précédent, nous avons utilisé la console rails pour enregistrer des données dans la base de données.

Cette fois, enregistrons les données dans la base de données en laissant l'utilisateur utiliser le navigateur.

Avant cela, vérifiez une fois la base de données.

Tapez la commande suivante dans le terminal.

rails dbconsole

Vous pouvez activer l'affichage des noms de colonnes avec le code suivant.

sqlite> .headers on

Dans cet état, vous pouvez vérifier le contenu en écrivant l'instruction SQL suivante.

sqlite> select * from users;
id|name|password|created_at|updated_at
1|poco|maru|2020-05-20 10:50:13.177731|2020-05-20 10:50:13.177731

Vous pouvez voir que la table des utilisateurs contient désormais les colonnes de nom et de mot de passe.

Créons maintenant un formulaire de saisie et stockons les données envoyées par l'utilisateur dans la base de données.

Écrivez le code suivant dans le fichier /users/new.html.erb.

new.html.erb


<%= form_tag("/users/create") do %>
  <p>Nom d'utilisateur</p>
  <input name="name">
  <p>password</p>
  <input name="password">
  <input type="submit" value="Envoyer">
<% end %>

form_tag est utilisé pour envoyer ou supprimer n'importe quelle valeur du fichier de vue vers le contrôleur. C'est la soi-disant «requête POST». Pour la différence entre get request et post request, veuillez consulter l'article ici. Lorsqu'un utilisateur envoie un bouton avec type =" submit ", une demande de publication correspondant à ʻusers / create` est exécutée.

Cette fois, le routage est le suivant.

routes.rb


post "users/create" => "users#create"

Autrement dit, les données ci-dessus sont envoyées à l'action de création du contrôleur des utilisateurs. Dans l'action de création, écrivez le code suivant.

users_controller.rb


def create
  user = User.new(name: params[:name], password: params[:password])
  user.save
end

Ce code utilise la classe User du modèle utilisateur pour stocker les données dans la table users de la base de données.

S'il y a une balise avec l'attribut name spécifié dans les données envoyées par form_tag, la valeur peut être gérée comme params [attribut nom] dans le contrôleur.

Dans ce cas, la valeur de <input name =" name "> est stockée dans params [: name], et la valeur de <input name =" password "> est stockée dans params [: password].

Un modèle est créé en utilisant ʻUser.new (nom: params [: nom], mot de passe: params [: mot de passe]) `pour les données envoyées et stockées dans la base de données.

De l'utilisateur, c'est comme suit.

image.png

Appuyez sur "Envoyer" dans cet état. Ensuite, dans l'action de création du contrôleur des utilisateurs, la chaîne this est stockée dans params [: name] et la chaîne test est stockée dans params [: password].

J'ai pu stocker les données comme suit.

3|this|test|2020-05-21 05:30:36.718523|2020-05-21 05:30:36.718523

Cependant, si vous le laissez tel quel, il n'y a pas de changement particulier même si vous appuyez sur envoyer. C'est ennuyeux, alors redirigeons vers un autre fichier.

Rediriger lorsque vous appuyez sur envoyer

Lorsque vous appuyez sur envoyer, l'action de création du contrôleur des utilisateurs est exécutée, donc si vous écrivez le code de redirection dans cette action de création, il sera redirigé vers un autre fichier.

Ajoutons le code au contrôleur des utilisateurs comme suit.

users_controller.rb


def create
  user = User.new(name: params[:name], password: params[:password])
  user.save
  redirect_to("/users/index")
end

Si vous l'écrivez ainsi, vous serez redirigé vers le fichier correspondant à / users / index lorsque vous appuierez sur envoyer.

Au fait, lors de l'écriture d'une redirection, n'oubliez pas de mettre / au début du chemin.

À la fin

C'est tout pour cet article.

Je vous remercie pour votre travail acharné.

Veuillez consulter les articles suivants si vous le souhaitez.

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

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 ④ ~ À propos des règles de dénomination et comment utiliser form_Tag ~
Explication de Ruby sur rails pour les débutants ①
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 ~
Comment utiliser Ruby on Rails
Explication de Ruby on rails pour les débutants ③ ~ Création d'une base de données ~
(Pour les débutants) [Rails] Technologie de gain de temps! Comment installer et utiliser Slim
[Pour les débutants Rails] Résumé de l'utilisation de RSpec (obtenir un aperçu)
(Ruby on Rails6) Comment créer un modèle et une table
[Procédure 1 pour les débutants] Ruby on Rails: Construction d'un environnement de développement
[R Spec on Rails] Comment écrire du code de test pour les débutants par les débutants
[Ruby on Rails] Comment éviter de créer des routes inutiles pour concevoir
Comment résoudre la construction de l'environnement local de Ruby on Rails (MAC)!
[Rails] Articles pour les débutants pour organiser et comprendre le flux de form_with
[Ruby] Comment utiliser la méthode gsub et la sous-méthode
Ruby on Rails ~ Principes de base de MVC et du routeur ~
Comment utiliser JQuery dans Rails 6 js.erb
[Pour les super débutants] Comment utiliser l'autofocus: vrai
[Ruby on Rails] Comment japonaisiser le message d'erreur de l'objet Form (ActiveModel)
Comment utiliser Eclipse sur mon PC avec 32 bits et 2 Go de mémoire
[Ruby on Rails] Comment écrire enum en japonais
Rails / Ruby: Comment obtenir du texte HTML pour Mail
[Ruby on Rails] Comment changer le nom de la colonne
[Ruby On Rails] Comment réinitialiser DB dans Heroku
Comment utiliser GitHub pour les super débutants (développement d'équipe)
[Explication approximative] Comment séparer le fonctionnement de l'environnement de production et de l'environnement de développement avec Rails
[Rails] Comment utiliser enum
Comment utiliser le retour Ruby
[Rails] Comment utiliser enum
Comment utiliser la jonction de rails
Ruby: Comment utiliser les cookies
[Rails] Comment utiliser la validation
[Rails] Comment utiliser authenticate_user!
[Rails] Comment utiliser Scope
[Pour les débutants] Explication des classes, des instances et des statiques en Java
[Ruby on Rails] Élimination de Fat Controller-First, logic to model-
Comment utiliser l'icône Font Awesome pour ul et li
Comment afficher des graphiques dans Ruby on Rails (LazyHighChart)
Comment exécuter React et Rails sur le même serveur
Procédures pour transmettre RealmObject à Fragment et comment utiliser Parceler
Comment gérer différentes versions de rbenv et Ruby
[Rails] Comment utiliser l'appareil (Remarque)