Креирање корпи за куповину - Рубин он Раилс

Преглед садржаја

Пре него што направимо корпу за куповину тако да корисник може да бира производе, морамо да научимо да користимо сесије у склопу Руби он Раилс; Када корисник прегледа нашу виртуелну продавницу, вероватно ће изабрати производе, оно што се обично користи за ову врсту апликације је да их отпремимо у виртуелну корпу за куповину, где ћемо задржати производ, цену, укупне трошкове куповину и количину производа, све док не дође до евентуалног плаћања, када корисник одлучује да обави куповину.
Да бисмо се придржавали овога што предлажемо, морамо одржавати производе које корисник одабере у нашој апликацији, јер ћемо за то користити сесије, са овом имплементацијом која то чини шине Податке можемо држати доступнима без потребе да их складиштимо у базама података и биће им приступачан корисник који их је покренуо из прегледача који успоставља везу са апликацијом, са којим комбинације кључвредност Они ће бити ускладиштени, а ми ћемо их имати на располагању.
Погледајмо пример како овај код изгледа, креирајмо нову методу у нашој апликацији у контролеру продавнице:
 привате деф финд_царт сессион [: царт] || = Корпа.нови крај 

Упркос томе што садржи око 4 реда кода, они подразумевају прилично велику сложеност, прво направимо приватну методу, на овај начин спречавамо шине да је учине доступном као радњу у контролеру, затим видимо да користимо оператор условног додељивања | | =.
Овај оператор у методи која нам омогућава да изведемо следећу функционалност, ако постоји хеш сесије који одговара кључ: колица онда враћамо његов садржај, у супротном правимо нови Царт објекат и додељујемо га сессионн, тада враћамо његову вредност.
Сада када смо мало савладали теоретски део приступа, идемо мало дубље у функционалност коју морамо изградити, након што направимо корпу за куповину, знамо да свака извршена продаја мора одржавати цену на којој је направљено оно за шта ћемо створити табелу која се зове лине_итемс, Оно што ће ово учинити је да сачувамо ред избора купца, да видимо код који морамо да поставимо у нашу базу података:
 испустите табелу ако постоји лине_итемс; креирајте табелу лине_итемс (ид инт продуцт_ид инт количина инт унит_прице децимална (10,2) ограничење фк_итемс_продуцт примарни кључ (ид)); није нулл ауто_инцремент, није нулл, није нулл подразумевано 0, није нулл, страни кључ (продуцт_ид) упућује на производе (ид), примарни кључ (ид)); 

Као што можемо видети у овој дефиницији наше нове табеле, додали смо референцу за а страни кључ које повезује поље продуцт_ид са пољем ид у табели производа, овај однос ће нам послужити када генеришемо модел.
С обзиром да имамо табелу с којом можемо комуницирати, за то морамо генерирати нови модел како бисмо га могли користити у нашој апликацији. Користићемо следећу команду са наше командне конзоле Руби он Раилс.
 депот> руби скрипта / генерисање модела ЛинеИтем Када наш модел буде генерисан, додаћемо му следеће: [и] апп / моделс / лине_итем.рб [ / и], јер све базе података не подржавају односе шина, руковање од њих је изричито. класа ЛинеИтем <АцтивеРецорд :: База припада_то: крај производа 

Након што смо креирали наш модел и табеле за нашу апликацију, преостаје нам само његов други део да завршимо са развојем и да имамо функционалну корпу за куповину која служи као одскочна даска за скок до много напреднијих апликација.
Настављамо са изградњом корпе за куповину за нашу апликацију, у Руби он РаилсДа бисмо то урадили, наставимо да гледамо модел који смо изградили и да видимо мало објашњење иза овог проблема. Раилс обрађује конвенцију која вам омогућава да закључите како третирати односе између табела након што смо их изричито декларисали, рекавши јој да наш модел ЛинеИтем има ову линију кода: припада_то: производ, Раилс енгине већ зна да унутар табеле мора постојати поље које се назива продуцт_ид.
Сада ћемо генерисати неопходан код за израду наше корпе за куповину, прво морамо применити метод у контролеру наше продавнице за додавање артикала у корпу. Прво ћемо пронаћи овај контролер: апп / цонтроллерс / сторе_цонтроллер.рб а унутра ћемо створити методу Додај у колица са следећим кодом у себи.
 деф адд_то_царт продуцт = Продуцт.финд (парамс [: ид]) @царт = финд_царт @ царт.адд_продуцт (продуцт) редирецт_то (: ацтион => 'дисплаи_царт') енд 

Сада морамо генерисати нашу класу Корпа, ова класа није везана за модел АцтивеРецорд Будући да не ступа у интеракцију са базом података, да бисмо нам олакшали ствари, ми ћемо је генерисати ручно у нашем именику апп / моделс, тамо ћемо креирати датотеку царт.рб.
Унутар наше нове датотеке сместићемо следеће:
 класа Корпа аттр_реадер: ставке аттр_реадер: тотал_прице деф иницијализе @итемс = [] @тотал_прице = 0.0 енд деф адд_продуцт (продуцт) @итемс << ЛинеИтем.фор_продуцт (продуцт) @тотал_прице + = продуцт.прице енд енд 

Сада када је ово завршено, идемо на наш модел ЛинеИтем и поставимо оно што нам недостаје:
 класа ЛинеИтем <АцтивеРецорд :: База припада_то: производ деф селф.фор_продуцт (производ) итем = селф.нев итем.куантити = 1 итем.продуцт = продуцт итем.унит_прице = продуцт.прице крај ставке крај 

Хајде да направимо кратак резиме онога што смо до сада имали. Већ имамо метод који нам омогућава да додамо артикл у корпу, ово је Додај у колица, онда имамо садржај нашег часа Корпа што нам омогућава да додамо производ и да трајемо у својој класи Ставка можемо извући вредности оних производа које додамо. Потребно је само да применимо још неколико елемената како би наша апликација радила, прво морамо додати радњу која нам омогућава да прикажемо приказ, а ако то не успе, да је генеришемо, за то ћемо додати следеће:
 деф дисплаи_царт @царт = финд_царт @итемс = @царт.итемс енд 

Ова метода ће сада по нашем мишљењу ићи у наш контролер: апп / виевс / сторе, креираћемо датотеку дисплаи_царт.рхтмл а унутра ћемо поставити следећи код:

Ваша корпа садржи ствари.


Наравно, ово још увијек не функционира, морамо додати посљедњи корак, а то је дефинирање наших нових модела у контексту апликације за коју ћемо отићи апликација / контролери и видећемо датотеку под називом апплицатион.рб у које морамо поставити следеће:
 класа АпплицатионЦонтроллер <АцтионЦонтроллер :: Основни модел: модел корпе: лине_итем енд 

Овим бисмо већ имали своје Колица за куповину основне, али то ће нас приближити имплементацији коначног производа са потпуно проширеном функционалношћу. Овим завршавамо овај водич Руби он Раилс и важно је напоменути да морамо пажљиво анализирати код који смо поставили како бисмо разумели разлог зашто функционише и на овај начин генерисали квалитетно знање.Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave