Varukorg skapas - Ruby on Rails

Innehållsförteckning

Innan vi kan bygga en kundvagn så att en användare kan välja produkter måste vi lära oss att använda sessioner inom Ruby on Rails; När en användare surfar i vår virtuella butik kommer de eventuellt att välja produkter, det som normalt används för denna typ av applikationer är att vi laddar upp den till en virtuell kundvagn, där vi kommer att behålla produkten, priset, den totala kostnaden för köp och mängden produkter, detta tills det sker en slutlig utcheckning, vilket är när användaren bestämmer sig för att göra köpet.
För att följa detta som vi föreslår måste vi behålla de produkter som användaren väljer i vår applikation, för detta kommer vi att använda sessioner, med denna implementering som gör skenor Vi kan hålla data tillgänglig utan att behöva lagra den i databaser och den kommer att vara tillgänglig för användaren som startade den från webbläsaren som upprättar anslutningen till applikationen, med vilken kombinationerna nyckel-ett värde De kommer att lagras och vi kommer att ha dem tillgängliga.
Låt oss se ett exempel på hur den här koden ser ut, låt oss skapa en ny metod i vår applikation i butikskontrollen:
 private def find_cart session [: cart] || = Cart.new end 

Trots att de är cirka 4 rader kod innebär dessa en ganska hög komplexitet, först gör vi den privata metoden, på så sätt förhindrar vi att räls gör den tillgänglig som en åtgärd i regulatorn, sedan ser vi att vi använder villkorlig tilldelningsoperatör | | =.
Denna operatör i metoden som tillåter oss att utföra följande funktionalitet, om det finns en session hash som motsvarar nyckel: vagn sedan returnerar vi dess innehåll, annars bygger vi ett nytt varukorgsobjekt och tilldelar det till sessionn, det är då vi returnerar dess värde.
Nu när vi har behärskat den teoretiska delen av tillvägagångssättet lite, kommer vi att gå lite mer på djupet i den funktionalitet som vi måste bygga, när vi väl har gjort vår kundvagn vet vi att varje försäljning som görs måste hålla priset där den gjordes för vad vi ska skapa ett bord som heter rad_artiklar, Vad detta kommer att göra är att lagra raden för köparens val, låt oss se koden som vi måste placera i vår databas:
 släpp tabell om det finns line_items; skapa tabell line_items (id int product_id int mängd int unit_price decimal (10,2) begränsning fk_items_product primär nyckel (id)); inte null auto_increment, inte null, inte null standard 0, inte null, främmande nyckel (product_id) refererar produkter (id), primär nyckel (id)); 

Som vi kan se i denna definition av vår nya tabell har vi lagt till en referens för a främmande nyckel som associerar fältet product_id med id -fältet i produkttabellen, kommer denna relation att tjäna oss när vi genererar modellen.
Eftersom vi har tabellen kan vi interagera med den, för detta måste vi generera en ny modell så att vi kan använda den i vår applikation. Vi kommer att använda följande kommando från vår kommandokonsol Ruby on Rails.
 depot> ruby ​​script / generera modell LineItem När vår modell har genererats kommer vi att lägga till följande i den: [i] app / models / line_item.rb [ / i], eftersom inte alla databaser stöder rälsrelationer, hantering av dem är uttryckligen. class LineItem <ActiveRecord :: Base belong_to: product end 

Efter att ha skapat vår modell och tabellerna för vår applikation har vi bara del 2 av den för att avsluta med utvecklingen och för att kunna ha en funktionell kundvagn som fungerar som en språngbräda för att hoppa till mycket mer avancerade applikationer.
Vi fortsätter med konstruktionen av kundvagnen för vår applikation, i Ruby on RailsFör att göra detta, låt oss fortsätta titta på modellen vi har byggt och se lite förklaringen bakom problemet. Räls hanterar en konvention som gör att du kan utläsa hur du behandlar relationer mellan tabeller när vi uttryckligen har deklarerat dem genom att berätta att vår LineItem -modell har denna kodrad: tillhör_till: produkt, rälsmotorn vet redan att det i tabellen måste finnas ett fält som heter product_id.
Nu ska vi generera den nödvändiga koden för att bygga vår kundvagn, först måste vi implementera metoden i vår butiks handkontroll för att lägga till varor i vagnen. Vi kommer först att hitta den här handkontrollen: app / controllers / store_controller.rb och inuti kommer vi att skapa metoden Lägg till i kundvagn med följande kod i den.
 def add_to_cart product = Product.find (params [: id]) @cart = find_cart @ cart.add_product (product) redirect_to (: action => 'display_cart') end 

Nu måste vi generera vår vagnklass, just denna klass är inte knuten till modellen ActiveRecord Eftersom den inte interagerar med databasen, för att göra det enklare för oss kommer vi att generera den manuellt i vår katalog app / modeller, där kommer vi att skapa filen cart.rb.
I vår nya fil kommer vi att placera följande:
 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 

Nu när detta är klart, låt oss gå till vår LineItem -modell och placera vad vi saknar:
 class LineItem <ActiveRecord :: Base belong_to: product def self.for_product (product) item = self.new item.quantity = 1 item.product = product item.unit_price = product.price item end end 

Låt oss göra en kort sammanfattning av vad vi har hittills. Vi har redan den metod som gör att vi kan lägga till en vara i vagnen, det här är Lägg till i kundvagn, då har vi innehållet i vår klass Vagn vilket gör att vi kan lägga till en produkt och hålla i vår klass LineItem vi kan extrahera värdena för de produkter som vi lägger till. Vi behöver bara implementera några element till så att vår applikation fungerar. Först måste vi lägga till en åtgärd som gör att vi kan visa vyn och, om inte det, för att generera den, för detta kommer vi att lägga till följande:
 def display_cart @cart = find_cart @items = @cart.items end 

Denna metod kommer att gå i vår controller, nu, enligt vår uppfattning: app / visningar / butik, skapar vi en fil display_cart.rhtml och inuti kommer vi att placera följande kod:

Din vagn innehåller saker.


Naturligtvis fungerar detta fortfarande inte, men vi måste lägga till ett sista steg och detta är att definiera våra nya modeller inom ramen för applikationen för detta kommer vi att gå till app / kontroller och vi kommer att se en fil som heter application.rb där vi måste placera följande:
 class ApplicationController <ActionController :: Basmodell: vagnmodell: line_item end 

Med detta skulle vi redan ha vår Kundvagn grundläggande men det kommer att föra oss närmare att implementera en slutprodukt med helt utökad funktionalitet. Med detta avslutar vi denna handledning av Ruby on Rails och det är viktigt att nämna att vi noggrant måste analysera koden som vi har placerat för att förstå orsaken till att den fungerar och på så sätt generera kvalitetskunskap.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave