Opprettelse av handlevogn - Ruby on Rails

Innholdsfortegnelse

Før vi kan bygge en handlevogn slik at en bruker kan velge produkter, må vi lære å bruke økter innenfor Ruby on Rails; Når en bruker surfer i vår virtuelle butikk, vil de muligens velge produkter, det som vanligvis brukes for denne typen applikasjoner er at vi laster det opp til en virtuell handlekurv, hvor vi beholder produktet, prisen, den totale kostnaden for kjøpet og mengden av produktene, dette til det er en eventuell kassa, som er når brukeren bestemmer seg for å foreta kjøpet.
For å overholde dette som vi foreslår, må vi opprettholde produktene som brukeren velger i vår applikasjon, for dette vil vi bruke økter, med denne implementeringen som gjør det skinner Vi kan holde dataene tilgjengelige uten å måtte lagre dem i databaser, og den vil være tilgjengelig for brukeren som startet den fra nettleseren som etablerer forbindelsen til applikasjonen, som kombinasjonene med nøkkelen verdi De vil bli lagret, og vi vil ha dem tilgjengelig.
La oss se et eksempel på hvordan denne koden ser ut, la oss lage en ny metode i vårt program i butikkontrolleren:
 private def find_cart økt [: handlevogn] || = Handlevogn. ny slutt 

Til tross for at de er omtrent 4 linjer med kode, innebærer disse en ganske høy kompleksitet, først lager vi den private metoden, på denne måten forhindrer vi at skinner gjør den tilgjengelig som en handling i kontrolleren, så ser vi at vi bruker betinget oppdragsoperatør | | =.
Denne operatøren i metoden som lar oss utføre følgende funksjonalitet, hvis det er en økt -hash som tilsvarer nøkkel: handlevogn så returnerer vi innholdet, ellers bygger vi et nytt handlekurvobjekt og tildeler det til sesjonen, det er da vi returnerer verdien.
Nå som vi har mestret den teoretiske delen av tilnærmingen litt, skal vi gå litt mer i dybden i funksjonaliteten som vi må bygge, når vi lager handlekurven vår, vet vi at hvert salg som gjøres må opprettholde prisen der den ble laget for det vi skal lage et bord som heter line_items, Hva dette vil gjøre er å lagre linjen i kjøperens utvalg, la oss se koden vi må plassere i databasen vår:
 slipp tabellen hvis det finnes line_items; lage tabell line_items (id int product_id int mengde int unit_price desimal (10,2) begrensning fk_items_product primærnøkkel (id)); ikke null auto_increment, ikke null, ikke null standard 0, ikke null, fremmed nøkkel (produkt_id) refererer produkter (id), primærnøkkel (id)); 

Som vi kan se i denne definisjonen av vår nye tabell, har vi lagt til en referanse for a utenlandsk nøkkel som forbinder produkt_id -feltet med id -feltet i produkttabellen, vil dette forholdet tjene oss når vi genererer modellen.
Siden vi har tabellen, kan vi samhandle med den, for dette må vi generere en ny modell slik at vi kan bruke den i applikasjonen vår. Vi vil bruke følgende kommando fra kommandokonsollen Ruby on Rails.
 depot> ruby ​​script / generere modell LineItem Når modellen vår er generert, skal vi legge til følgende i den: [i] app / models / line_item.rb [ / i], ettersom ikke alle databaser støtter relasjoner, håndtering av dem er eksplisitt. klasse LineItem <ActiveRecord :: Base tilhører_til: produktslutt 

Etter å ha laget vår modell og tabellene for applikasjonen vår, har vi bare del 2 av den for å avslutte med utviklingen og for å kunne ha en funksjonell handlevogn som fungerer som et springbrett for å hoppe til mye mer avanserte applikasjoner.
Vi fortsetter med byggingen av handlekurven for søknaden vår, i Ruby on RailsFor å gjøre dette, la oss fortsette å se på modellen vi har bygget og se litt forklaringen bak problemet. Skinner håndterer en konvensjon som lar deg utlede hvordan du skal behandle forhold mellom tabeller når vi eksplisitt har erklært dem, ved å fortelle at vår LineItem -modell har denne kodelinjen: tilhører_til: produkt, skinnemotoren vet allerede at det i tabellen må være et felt kalt product_id.
Nå skal vi generere den nødvendige koden for å bygge handlekurven, først må vi implementere metoden i kontrolleren i butikken vår for å legge varer i handlekurven. Vi finner først denne kontrolleren: app / kontrollere / store_controller.rb og inne vil vi lage metoden Legg i handlekurv med følgende kode i den.
 def add_to_cart product = Product.find (params [: id]) @cart = find_cart @ cart.add_product (product) redirect_to (: action => 'display_cart') end 

Nå må vi generere handlekurvklassen, denne klassen er ikke knyttet til modellen ActiveRecord Fordi den ikke samhandler med databasen, for å gjøre ting enklere for oss, skal vi generere den manuelt i katalogen vår app / modeller, der vil vi lage filen handlevogn. rb.
I den nye filen vil vi plassere følgende:
 klasse Handlevogn 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 

Når dette er fullført, la oss gå til vår LineItem -modell og plassere det vi mangler:
 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 

La oss gjøre en kort oppsummering av det vi har så langt. Vi har allerede metoden som gjør at vi kan legge til en vare i handlekurven, dette er Legg i handlekurv, så har vi innholdet i klassen vår Handlevogn som lar oss legge til et produkt og vare i vår klasse LineItem vi kan trekke ut verdiene til de produktene vi legger til. Vi trenger bare å implementere noen få flere elementer slik at applikasjonen vår fungerer. Først må vi legge til en handling som lar oss vise utsikten og, hvis ikke, for å generere den, for dette vil vi legge til følgende:
 def display_cart @cart = find_cart @items = @cart.items end 

Denne metoden vil gå i vår kontroller, nå, etter vårt syn: app / visninger / butikk, vil vi lage en fil display_cart.rhtml og inne vil vi plassere følgende kode:

Handlekurven din inneholder ting.


Selvfølgelig fungerer dette fremdeles ikke, men vi må legge til et siste trinn, og dette er å definere våre nye modeller innenfor konteksten av applikasjonen for dette vi vil gå til app / kontrollere og vi vil se en fil som heter application.rb der vi må plassere følgende:
 class ApplicationController <ActionController :: Basismodell: handlekurvmodell: line_item end 

Med dette ville vi allerede ha vår Handlevogn grunnleggende, men det vil bringe oss nærmere implementeringen av et sluttprodukt med fullt utvidet funksjonalitet. Med dette fullfører vi denne opplæringen av Ruby on Rails og det er viktig å nevne at vi må nøye analysere koden vi har plassert for å forstå årsaken til at den fungerer og på denne måten generere kvalitetskunnskap.Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave