Iepirkumu groza izveide - Rubīns uz sliedēm

Satura rādītājs

Pirms mēs varam izveidot iepirkumu grozu, lai lietotājs varētu izvēlēties produktus, mums jāiemācās lietot sesijas iekšpusē Rubīns uz sliedēm; Kad lietotājs pārlūko mūsu virtuālo veikalu, iespējams, viņš izvēlēsies produktus, kas parasti tiek izmantoti šāda veida lietojumprogrammām, ka mēs augšupielādējam tos virtuālā iepirkumu grozā, kur mēs saglabāsim produktu, cenu, kopējās izmaksas pirkumu un produktu daudzumu, līdz tiek veikta galīgā izrakstīšanās, kad lietotājs nolemj veikt pirkumu.
Lai ievērotu mūsu piedāvāto, mums jāuztur produkti, kurus lietotājs izvēlas mūsu lietojumprogrammā, tāpēc mēs izmantosim sesijas, izmantojot šo ieviešanu sliedes Mēs varam saglabāt pieejamos datus bez nepieciešamības tos uzglabāt datu bāzēs, un lietotājs, kurš tos uzsāka, tiem varēs piekļūt no pārlūkprogrammas, kas izveido savienojumu ar lietojumprogrammu, ar kuru kombinācijas taustiņupubliski Tie tiks saglabāti, un mums tie būs pieejami.
Apskatīsim piemēru, kā izskatās šis kods, izveidosim jaunu metodi savā lietojumprogrammā veikala kontrollerī:
 private def find_cart session [: grozs] || = Grozs.jaunas beigas 

Neskatoties uz to, ka tās ir apmēram 4 koda rindas, tās ir diezgan sarežģītas, vispirms mēs izveidojam privāto metodi, tādā veidā novēršot sliedēm iespēju to padarīt pieejamu kā darbību kontrolierī, pēc tam redzam, ka izmantojam nosacītā piešķiršanas operatoru | | =.
Šis operators metodē, kas ļauj mums veikt šādu funkcionalitāti, ja ir sesijas jaukšana, kas atbilst atslēga: ratiņi tad mēs atdodam tā saturu, pretējā gadījumā mēs izveidojam jaunu groza objektu un piešķiram to sesijain, tad atgriežam tā vērtību.
Tagad, kad esam nedaudz apguvuši pieejas teorētisko daļu, mēs nedaudz padziļināsim funkcionalitāti, kas mums jāveido, un pēc iepirkumu groza izveides mēs zinām, ka katrai veiktajai izpārdošanai ir jāsaglabā cena pie kura tas tika izveidots, lai izveidotu tabulu ar nosaukumu line_items, Tas ļaus saglabāt pircēja atlases rindu, apskatīsim kodu, kas jāievieto mūsu datu bāzē:
 nometiet tabulu, ja tāda ir, line_items; izveidot tabulu line_items (id int product_id int daudzums int unit_price decimal (10,2) ierobežojums fk_items_product primārā atslēga (id)); nav null auto_increment, not null, not null noklusējuma 0, nav null, ārējās atslēgas (product_id) atsauces produkti (id), primārā atslēga (id)); 

Kā redzam šajā mūsu jaunās tabulas definīcijā, esam pievienojuši atsauci uz sveša atslēga kas saista lauku product_id ar produktu tabulas id lauku, šī attiecība mums kalpos, kad mēs ģenerēsim modeli.
Tā kā mums ir tabula, mēs varam ar to mijiedarboties, tāpēc mums ir jāģenerē jauns modelis, lai mēs varētu to izmantot savā lietojumprogrammā. Mēs izmantosim šādu komandu no mūsu komandu konsoles Rubīns uz sliedēm.
 depo> rubīna skripts / ģenerēt modeli LineItem Kad mūsu modelis ir ģenerēts, mēs tam pievienosim: [i] app / models / line_item.rb [ / i], jo ne visas datu bāzes atbalsta sliežu attiecības, apstrādi no tiem ir nepārprotami. klase LineItem <ActiveRecord :: Bāze pieder_to: produkta beigas 

Kad esam izveidojuši savu modeli un tabulas savai lietojumprogrammai, mums ir tikai tā 2. daļa, kas jāpabeidz ar tās izstrādi un lai mums būtu funkcionāls iepirkumu grozs, kas kalpo kā atspēriena punkts, lai pārietu uz daudz progresīvākām lietojumprogrammām.
Gadā mēs turpinām veidot mūsu iepirkumu grozu Rubīns uz sliedēmLai to izdarītu, turpināsim aplūkot mūsu izveidoto modeli un nedaudz apskatīsim problēmas skaidrojumu. Sliedes apstrādā konvenciju, kas ļauj secināt, kā apstrādāt attiecības starp tabulām, kad esam tās skaidri deklarējuši, norādot, ka mūsu LineItem modelim ir šāda koda rinda: pieder_to: produkts, sliežu dzinējs jau zina, ka tabulā jābūt laukam ar nosaukumu product_id.
Tagad mēs ģenerēsim nepieciešamo kodu, lai izveidotu mūsu iepirkumu grozu, vispirms mums ir jāievieš metode mūsu veikala kontrollerī, lai pievienotu preces grozam. Vispirms mēs atradīsim šo kontrolieri: app / kontrolieri / store_controller.rb un iekšpusē mēs izveidosim metodi Pievienot grozam ar šādu kodu tajā.
 def add_to_cart product = Product.find (params [: id]) @cart = find_cart @ cart.add_product (product) redirect_to (: action => 'display_cart') beigas 

Tagad mums jāģenerē sava groza klase, šī konkrētā klase nav saistīta ar modeli ActiveRecord Tā kā tā nesadarbojas ar datu bāzi, lai mums būtu vieglāk, mēs to ģenerēsim manuāli savā direktorijā lietotne / modeļi, tur mēs izveidosim failu grozs.rb.
Mūsu jaunajā failā mēs ievietosim šādu informāciju:
 klases grozs attr_reader: preces attr_reader: kopējā_cena def inicializēt @items = [] @total_price = 0.0 beigas def add_product (produkts) @items << LineItem.for_product (product) @total_price + = product.price end end 

Kad tas ir pabeigts, dodieties uz mūsu LineItem modeli un ievietojiet to, kas mums trūkst:
 klases LineItem <ActiveRecord :: Bāze pieder_to: product def self.for_product (product) item = self.new item.quantity = 1 item.product = product item.unit_price = product.price item end 

Veiksim īsu kopsavilkumu par to, kas mums ir līdz šim. Mums jau ir metode, kas ļauj grozam pievienot preci Pievienot grozam, tad mums ir mūsu klases saturs Grozs kas ļauj mums pievienot produktu un palikt mūsu klasē Līnijas vienums mēs varam iegūt to pievienoto produktu vērtības. Mums tikai jāievieš vēl daži elementi, lai mūsu lietojumprogramma darbotos, vispirms mums jāpievieno darbība, kas ļauj mums parādīt skatu un, ja tas nav iespējams, to ģenerēt, šim nolūkam mēs pievienosim sekojošo:
 def display_cart @cart = find_cart @items = @cart.items end 

Šī metode, mūsuprāt, tiks izmantota mūsu kontrolierī: lietotne / skatījumi / veikals, mēs izveidosim failu display_cart.rhtml un iekšpusē mēs ievietojam šādu kodu:

Jūsu grozā ir lietas.


Protams, tas joprojām nedarbojas, bet mums jāpievieno pēdējais solis, un tas ir mūsu jauno modeļu definēšana saistībā ar lietojumprogrammu, uz kuru mēs dosimies lietotne / kontrolieri un mēs redzēsim failu ar nosaukumu pieteikums.rb kurā mums jāievieto šādi:
 klase ApplicationController <ActionController :: Bāzes modelis: groza modelis: line_item end 

Ar to mums jau būtu savs Iepirkšanās ratiņi pamata, bet tas tuvinās mūs galaprodukta ar pilnībā paplašinātu funkcionalitāti ieviešanai. Ar to mēs pabeidzam šo apmācību Rubīns uz sliedēm un ir svarīgi pieminēt, ka mums rūpīgi jāizanalizē mūsu ievietotais kods, lai saprastu tā darbības iemeslu un tādējādi radītu kvalitatīvas zināšanas.Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave