Stvaranje košarice - Rubin na tračnicama

Sadržaj

Prije nego što napravimo košaricu za kupnju tako da korisnik može birati proizvode, moramo naučiti koristiti sjednice unutar Ruby on Rails; Kad korisnik pregledava našu virtualnu trgovinu, vjerojatno će odabrati proizvode, ono što se obično koristi za ovu vrstu aplikacije je da ih učitamo u virtualnu košaricu za kupnju, gdje ćemo zadržati proizvod, cijenu, ukupne troškove kupnju i količinu proizvoda, sve dok ne dođe do eventualnog plaćanja, a to je kada korisnik odluči obaviti kupnju.
Kako bismo se pridržavali ovoga što predlažemo, moramo održavati proizvode koje korisnik odabere u našoj aplikaciji, jer ćemo za to koristiti sjednice, s ovom implementacijom koja to čini tračnice Podatke možemo držati dostupnima bez potrebe za pohranjivanjem u baze podataka, a bit će im pristupačan i korisnik koji ih je pokrenuo iz preglednika koji uspostavlja vezu s aplikacijom, s kojim kombinacije ključavalue Oni će biti pohranjeni, a mi ćemo ih imati na raspolaganju.
Pogledajmo primjer kako ovaj kôd izgleda, stvorimo novu metodu u našoj aplikaciji u kontroleru trgovine:
 private def find_cart session [: cart] || = Kolica.novi kraj 

Unatoč tome što sadrže oko 4 retka koda, oni podrazumijevaju prilično visoku složenost, prvo napravimo privatnu metodu, na ovaj način spriječimo da tračnice postanu dostupne kao radnja u kontroleru, zatim vidimo da koristimo operator uvjetnog dodjeljivanja | | =.
Ovaj operator u metodi koja nam omogućuje izvođenje sljedeće funkcije, ako postoji raspršivanje sesije koje odgovara ključ: kolica tada vraćamo njegov sadržaj, u protivnom sastavljamo novi objekt Cart i dodjeljujemo ga sessionn, tada vraćamo njegovu vrijednost.
Sada kada smo malo savladali teoretski dio pristupa, ići ćemo malo dublje u funkcionalnost koju moramo izgraditi, nakon što napravimo košaricu za kupnju, znamo da svaka izvršena prodaja mora održavati cijenu na kojem je napravljen za ono što ćemo stvoriti tablicu zvanu stavke_reda, Ovo će učiniti spremanje retka po izboru kupca, da vidimo kôd koji moramo postaviti u našu bazu podataka:
 ispustiti tablicu ako postoji line_items; stvoriti tablicu line_items (id int product_id int količina int unit_price decimalna (10,2) ograničenje fk_items_product primarni ključ (id)); nije null auto_increment, nije null, nije null zadano 0, nije null, strani ključ (product_id) upućuje na proizvode (id), primarni ključ (id)); 

Kao što možemo vidjeti u ovoj definiciji naše nove tablice, dodali smo referencu za a strani kljuc koje povezuje polje product_id s poljem id tablice proizvoda, ovaj će nam odnos poslužiti kada generiramo model.
Budući da imamo tablicu s kojom možemo komunicirati, za to moramo generirati novi model kako bismo ga mogli koristiti unutar naše aplikacije. Upotrijebit ćemo sljedeću naredbu s naše naredbene konzole Ruby on Rails.
 depot> ruby ​​skripta / generiranje modela LineItem Nakon što je naš model generiran, dodat ćemo mu sljedeće: [i] app / models / line_item.rb [ / i], jer sve baze podataka ne podržavaju odnose tračnica, rukovanje od njih je izričito. klasa LineItem <ActiveRecord :: Baza pripada_to: kraj proizvoda 

Nakon što smo izradili naš model i tablice za našu aplikaciju, preostaje nam samo dio 2 da završimo s njegovim razvojem i da možemo imati funkcionalnu košaricu koja služi kao odskočna daska za skok u mnogo naprednije aplikacije.
Nastavljamo s izgradnjom košarice za našu aplikaciju, u Ruby on RailsDa bismo to učinili, nastavimo gledati model koji smo izgradili i vidjeti malo objašnjenje iza tog problema. Tračnice obrađuje konvenciju koja vam omogućuje da zaključite kako postupati s odnosima između tablica nakon što smo ih izričito deklarirali, govoreći joj da naš model LineItem ima ovu liniju koda: pripada_to: proizvodu, tračnički stroj već zna da unutar tablice mora postojati polje pod nazivom product_id.
Sada ćemo generirati potreban kôd za izradu naše košarice, najprije moramo implementirati metodu u kontroleru naše trgovine za dodavanje artikala u košaricu. Prvo ćemo locirati ovaj kontroler: app / controllers / store_controller.rb a unutra ćemo stvoriti metodu Dodaj u košaricu sa sljedećim kodom u sebi.
 def add_to_cart product = Product.find (params [: id]) @cart = find_cart @ cart.add_product (product) redirect_to (: action => 'display_cart') end 

Sada moramo generirati našu klasu Košarica, ta klasa nije vezana za model ActiveRecord Budući da ne stupa u interakciju s bazom podataka, kako bismo nam olakšali stvari, generirat ćemo je ručno u našem imeniku aplikacija / modeli, tamo ćemo stvoriti datoteku kolica.rb.
Unutar naše nove datoteke smjestit ćemo sljedeće:
 klasa Košarica 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 kraj kraja 

Sada s ovim dovršenim, idemo na naš model LineItem i postavimo ono što nam nedostaje:
 klasa LineItem <ActiveRecord :: Baza pripada_to: proizvod def self.for_product (proizvod) item = self.new item.quantity = 1 item.product = product item.unit_price = product.price kraj stavke kraj 

Napravimo kratak sažetak onoga što smo do sada imali. Već imamo metodu koja nam omogućuje dodavanje artikla u košaricu Dodaj u košaricu, tada imamo sadržaj našeg razreda Košarica što nam omogućuje dodavanje proizvoda i posljednje u našoj klasi Stavka možemo izvući vrijednosti onih proizvoda koje dodamo. Moramo implementirati još samo nekoliko elemenata kako bi naša aplikacija radila, prvo moramo dodati radnju koja nam omogućuje prikaz prikaza, a ako to ne uspije, da ga generiramo, za to ćemo dodati sljedeće:
 def display_cart @cart = find_cart @items = @cart.items end 

Ova metoda će sada ući u naš kontroler, po našem mišljenju: app / views / store, stvorit ćemo datoteku display_cart.rhtml a unutra ćemo postaviti sljedeći kod:

Vaša košarica sadrži stvari.


Naravno da to još uvijek ne funkcionira, moramo dodati posljednji korak, a to je definiranje naših novih modela u kontekstu aplikacije za koju ćemo otići aplikaciju / kontrolere i vidjet ćemo datoteku pod nazivom aplikacija.rb u koje moramo postaviti sljedeće:
 klasa ApplicationController <ActionController :: Osnovni model: model košarice: line_item end 

S ovim bismo već imali svoje Košarica osnovne, ali to će nas približiti implementaciji konačnog proizvoda s potpuno proširenom funkcionalnošću. Ovim završavamo ovaj vodič Ruby on Rails važno je spomenuti da moramo pažljivo analizirati kôd koji smo postavili kako bismo razumjeli razlog zašto radi i na taj način generirali kvalitetno znanje.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave