Création de panier d'achat - Ruby on Rails

Table des matières

Avant de pouvoir créer un panier d'achat pour qu'un utilisateur puisse sélectionner des produits, nous devons apprendre à utiliser le séances dans Rubis sur rails; Lorsqu'un utilisateur parcourt notre boutique virtuelle, il sélectionnera éventuellement des produits, ce qui est normalement utilisé pour ce type d'application c'est que nous le téléchargeons dans un panier virtuel, où nous conserverons le produit, le prix, le coût total du l'achat et la quantité des produits, ceci jusqu'à ce qu'il y ait une éventuelle caisse, c'est-à-dire lorsque l'utilisateur décide de faire l'achat.
Afin de se conformer à ce que nous proposons, nous devons maintenir les produits que l'utilisateur choisit dans notre application, pour cela nous utiliserons le séances, avec cette implémentation qui fait rails Nous pouvons garder les données disponibles sans avoir besoin de les stocker dans des bases de données et elles seront accessibles par l'utilisateur qui les a lancées à partir du navigateur qui établit la connexion à l'application, avec laquelle les combinaisons cléune valeur Ils seront stockés et nous les aurons disponibles.
Voyons un exemple de ce à quoi ressemble ce code, créons une nouvelle méthode dans notre application dans le contrôleur de magasin :
 private def find_cart session [: cart] || = Cart.new end 

Bien qu'il s'agisse d'environ 4 lignes de code, celles-ci entraînent une complexité assez élevée, nous créons d'abord la méthode privée, de cette manière nous empêchons les rails de la rendre disponible en tant qu'action dans le contrôleur, puis nous voyons que nous utilisons l'opérateur d'affectation conditionnelle | | =.
Cet opérateur dans la méthode qui nous permet d'effectuer la fonctionnalité suivante, s'il existe un hachage de session qui correspond au clé : chariot puis on retourne son contenu, sinon on construit un nouvel objet Cart et on l'affecte au sessionn, c'est à ce moment là qu'on retourne sa valeur.
Maintenant que nous maîtrisons un peu la partie théorique de la démarche, nous allons approfondir un peu plus la fonctionnalité que nous devons construire, une fois que nous avons fait notre panier nous savons que chaque vente qui est faite doit maintenir le prix à laquelle il a été fait pour ce que nous allons créer une table appelée éléments_de_ligne, Ce que cela va faire, c'est stocker la ligne de la sélection de l'acheteur, voyons le code que nous devons placer dans notre base de données :
 supprimer la table s'il existe line_items; créer une table line_items (id int product_id int quantité int unit_price decimal (10,2) contrainte fk_items_product clé primaire (id)); non nul auto_increment, non nul, non nul par défaut 0, non nul, clé étrangère (product_id) références produits (id), clé primaire (id)); 

Comme nous pouvons le voir dans cette définition de notre nouvelle table, nous avons ajouté une référence pour un clé étrangère qui associe le champ product_id au champ id de la table product, cette relation nous servira lors de la génération du modèle.
Puisque nous avons la table, nous pouvons interagir avec elle, pour cela nous devons générer un nouveau modèle afin que nous puissions l'utiliser dans notre application. Nous utiliserons la commande suivante de notre console de commande Rubis sur rails.
 dépôt> ruby ​​​​script / generate model LineItem Une fois notre modèle généré, nous allons y ajouter les éléments suivants : [i] app / models / line_item.rb [/ i], car toutes les bases de données ne prennent pas en charge les relations rails, la manipulation d'entre eux est explicitement. class LineItem <ActiveRecord :: Base appartient_à: fin du produit 

Après avoir créé notre modèle et les tableaux de notre application, nous n'en avons plus qu'une partie 2 pour terminer son développement et pouvoir disposer d'un panier fonctionnel qui sert de tremplin pour sauter vers des applications beaucoup plus avancées.
Nous poursuivons la construction du panier d'achat de notre application, en Rubis sur railsPour ce faire, continuons à regarder le modèle que nous avons construit et voyons un peu l'explication derrière le problème. Rails gère une convention qui vous permet de déduire comment traiter les relations entre les tables une fois que nous les avons explicitement déclarées, en lui disant que notre modèle LineItem a cette ligne de code : appartient_à : produit, le moteur de rails sait déjà que dans la table il doit y avoir un champ appelé product_id.
Maintenant, nous allons générer le code nécessaire pour construire notre panier, nous devons d'abord implémenter la méthode dans le contrôleur de notre magasin pour ajouter des articles au panier. Nous allons d'abord localiser ce contrôleur : app / contrôleurs / store_controller.rb et à l'intérieur, nous allons créer la méthode Ajouter au panier avec le code suivant dedans.
 def add_to_cart product = Product.find (params [: id]) @cart = find_cart @ cart.add_product (product) redirect_to (: action => 'display_cart') end 

Maintenant, nous devons générer notre classe Cart, cette classe particulière n'est pas liée au modèle Enregistrement Actif Parce qu'il n'interagit pas avec la base de données, pour nous faciliter les choses, nous allons le générer manuellement dans notre répertoire application / modèles, là nous allons créer le fichier panier.rb.
Dans notre nouveau fichier, nous placerons les éléments suivants :
 class Cart attr_reader: items attr_reader: total_price def initialize @items = [] @total_price = 0.0 end def add_product (product) @items << LineItem.for_product (product) @total_price + = product.price end end 

Maintenant que cela est terminé, passons à notre modèle LineItem et plaçons ce qui nous manque :
 class LineItem <ActiveRecord :: Base appart_to: product def self.for_product (product) item = self.new item.quantity = 1 item.product = product item.unit_price = product.price item end end 

Faisons un bref résumé de ce que nous avons jusqu'à présent. Nous avons déjà la méthode qui nous permet d'ajouter un article au panier, c'est Ajouter au panier, alors nous avons le contenu de notre classe Chariot ce qui nous permet d'ajouter un produit et dernier dans notre classe Élément de ligne nous pouvons extraire les valeurs de ces produits que nous ajoutons. Il nous suffit d'implémenter quelques éléments supplémentaires pour que notre application fonctionne, nous devons d'abord ajouter une action qui nous permet d'afficher la vue et, à défaut, de la générer, pour cela, nous ajouterons ce qui suit :
 def display_cart @cart = find_cart @items = @ cart.items end 

Cette méthode ira dans notre contrôleur, maintenant, à notre avis : application / vues / magasin, nous allons créer un fichier display_cart.rhtml et à l'intérieur nous placerons le code suivant :

Votre panier contient des choses.


Bien sûr cela ne fonctionne toujours pas encore nous devons ajouter une dernière étape et c'est de définir nos nouveaux modèles dans le cadre de l'application pour cela nous irons à application / contrôleurs et nous verrons un fichier appelé application.rb dans lequel il faut placer :
 class ApplicationController <ActionController :: Modèle de base : modèle de panier : line_item end 

Avec cela, nous aurions déjà notre Chariot basique, mais cela nous rapprochera de la mise en œuvre d'un produit final avec des fonctionnalités entièrement étendues. Avec cela, nous terminons ce tutoriel de Rubis sur rails et il est important de mentionner que nous devons soigneusement analyser le code que nous avons placé afin de comprendre la raison pour laquelle il fonctionne et ainsi générer des connaissances de qualité.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave