Creazione del carrello della spesa - Ruby on Rails

Sommario

Prima di poter costruire un carrello della spesa in modo che un utente possa selezionare i prodotti, dobbiamo imparare a usare il sessioni entro Ruby on Rails; Quando un utente sta navigando nel nostro negozio virtuale, probabilmente selezionerà dei prodotti, ciò che viene normalmente utilizzato per questo tipo di applicazione è che lo carichiamo su un carrello virtuale, dove conserveremo il prodotto, il prezzo, il costo totale del acquisto e la quantità dei prodotti, questo fino ad un eventuale checkout, cioè quando l'utente decide di effettuare l'acquisto.
Per rispettare ciò che stiamo proponendo, dobbiamo mantenere i prodotti che l'utente sceglie nella nostra applicazione, per questo utilizzeremo il sessioni, con questa implementazione che fa rotaie Possiamo mantenere i dati disponibili senza la necessità di archiviarli in database e saranno accessibili dall'utente che li ha avviati dal browser che stabilisce la connessione all'applicazione, con cui le combinazioni chiaveun valore Verranno archiviati e li avremo a disposizione.
Vediamo un esempio di come appare questo codice, creiamo un nuovo metodo nella nostra applicazione nel controller del negozio:
 private def find_cart session [: cart] || = Cart.new end 

Nonostante siano circa 4 righe di codice, queste comportano una complessità abbastanza elevata, prima rendiamo il metodo privato, in questo modo impediamo ai rails di renderlo disponibile come azione nel controller, poi vediamo che usiamo l'operatore di assegnazione condizionale | | =.
Questo operatore nel metodo che ci permette di eseguire la seguente funzionalità, se c'è un hash di sessione che corrisponde al chiave: carrello poi ne restituiamo il contenuto, altrimenti costruiamo un nuovo oggetto Cart e lo assegniamo alla sessionn, ecco quando restituiamo il suo valore.
Ora che abbiamo padroneggiato un po' la parte teorica dell'approccio, andremo un po' più in profondità nelle funzionalità che dobbiamo costruire, una volta realizzato il nostro carrello sappiamo che ogni vendita che viene effettuata deve mantenere il prezzo in cui è stato realizzato per quello che andremo a creare una tabella chiamata line_items, Ciò che farà è memorizzare la riga della selezione dell'acquirente, vediamo il codice che dobbiamo inserire nel nostro database:
 elimina la tabella se esiste line_items; crea tabella line_items (id int product_id int quantità int unit_price decimal (10,2) constraint fk_items_product chiave primaria (id)); not null auto_increment, not null, not null default 0, not null, chiave esterna (product_id) fa riferimento a prodotti (id), chiave primaria (id)); 

Come possiamo vedere in questa definizione della nostra nuova tabella, abbiamo aggiunto un riferimento per a chiave esterna che associa il campo product_id al campo id della tabella prodotto, questa relazione ci servirà quando generiamo il modello.
Poiché abbiamo la tabella, possiamo interagire con essa, per questo dobbiamo generare un nuovo modello in modo da poterlo utilizzare all'interno della nostra applicazione. Useremo il seguente comando dalla nostra console di comando Ruby on Rails.
 depot> ruby ​​​​script / generate model LineItem Una volta che il nostro modello è stato generato, aggiungeremo quanto segue: [i] app / models / line_item.rb [/ i], poiché non tutti i database supportano le relazioni dei binari, la gestione di loro è esplicitamente. class LineItem <ActiveRecord :: La base appartiene_a: fine prodotto 

Dopo aver creato il nostro modello e le tabelle per la nostra applicazione, ci resta solo la parte 2 per terminare lo sviluppo e poter avere un carrello della spesa funzionale che funge da trampolino di lancio per saltare ad applicazioni molto più avanzate.
Continuiamo con la costruzione del carrello per la nostra applicazione, in Ruby on RailsPer fare ciò, continuiamo a guardare il modello che abbiamo costruito e vediamo un po' la spiegazione dietro il problema. Rotaie gestisce una convenzione che consente di dedurre come trattare le relazioni tra le tabelle una volta che le abbiamo dichiarate esplicitamente, dicendogli che il nostro modello LineItem ha questa riga di codice: appartiene_a: prodotto, il motore di rotaie sa già che all'interno della tabella deve esserci un campo chiamato product_id.
Ora genereremo il codice necessario per costruire il nostro carrello, per prima cosa dobbiamo implementare il metodo nel controller del nostro negozio per aggiungere articoli al carrello. Per prima cosa individueremo questo controller: app/controller/store_controller.rb e dentro creeremo il metodo Aggiungi al carrello con il seguente codice al suo interno.
 def add_to_cart product = Product.find (params [: id]) @cart = find_cart @ cart.add_product (product) redirect_to (: action => 'display_cart') end 

Ora dobbiamo generare la nostra classe Cart, questa particolare classe non è legata al modello ActiveRecord Poiché non interagisce con il database, per semplificarci le cose, lo genereremo manualmente nella nostra directory app/modelli, lì creeremo il file carrello.rb.
All'interno del nostro nuovo file inseriremo quanto segue:
 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 

Ora, completato questo, andiamo al nostro modello LineItem e posizioniamo ciò che ci manca:
 class LineItem <ActiveRecord :: Base appartiene_a: product def self.for_product (prodotto) item = self.new item.quantity = 1 item.product = product item.unit_price = product.price fine articolo 

Facciamo un breve riassunto di ciò che abbiamo finora. Abbiamo già il metodo che ci permette di aggiungere un articolo al carrello, questo è Aggiungi al carrello, quindi abbiamo il contenuto della nostra classe Carrello che ci permette di aggiungere un prodotto e durare nella nostra classe Voce Line possiamo estrarre i valori di quei prodotti che aggiungiamo. Abbiamo solo bisogno di implementare qualche altro elemento in modo che la nostra applicazione funzioni, prima dobbiamo aggiungere un'azione che ci permetta di mostrare la vista e, in mancanza, di generarla, per questo aggiungeremo quanto segue:
 def display_cart @cart = find_cart @items = @ cart.items end 

Questo metodo andrà nel nostro controller, ora, a nostro avviso: app / visualizzazioni / negozio, creeremo un file display_cart.rhtml e al suo interno inseriremo il seguente codice:

Il tuo carrello contiene cose.


Ovviamente questo non funziona ancora, ma dobbiamo aggiungere un ultimo passaggio e questo è definire i nostri nuovi modelli nel contesto dell'applicazione per questo andremo a app / controller e vedremo un file chiamato applicazione.rb in cui dobbiamo inserire quanto segue:
 class ApplicationController <ActionController :: Modello base: modello carrello: line_item end 

Con questo avremmo già il nostro Carrello della spesa di base ma che ci avvicinerà all'implementazione di un prodotto finale con funzionalità completamente estese. Con questo finiamo questo tutorial di Ruby on Rails ed è importante ricordare che dobbiamo analizzare attentamente il codice che abbiamo inserito per capire il motivo per cui funziona e in questo modo generare conoscenza di qualità.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave