Създаване на кошница - Ruby on Rails

Съдържание

Преди да можем да изградим количка за пазаруване, така че потребителят да може да избира продукти, трябва да се научим да използваме сесии в рамките на Ruby on Rails; Когато потребител разглежда нашия виртуален магазин, той евентуално ще избере продукти, което обикновено се използва за този тип приложения е, че го качваме във виртуална кошница за пазаруване, където ще съхраняваме продукта, цената, общите разходи за покупката и количеството на продуктите, това до евентуално плащане, когато потребителят решава да направи покупката.
За да се съобразим с това, което предлагаме, трябва да поддържаме продуктите, които потребителят избира в нашето приложение, за това ще използваме сесии, с това изпълнение, което прави релси Можем да поддържаме данните достъпни, без да е необходимо да ги съхраняваме в бази данни и те ще бъдат достъпни от потребителя, който ги е стартирал от браузъра, който установява връзката с приложението, с което комбинациите ключстойност Те ще бъдат съхранявани и ние ще ги имаме на разположение.
Нека да видим пример за това как изглежда този код, нека създадем нов метод в нашето приложение в контролера на магазина:
 private def find_cart session [: cart] || = Cart.new край 

Въпреки че са около 4 реда код, те водят до доста висока сложност, първо правим частния метод, по този начин предотвратяваме релсите да го направят достъпен като действие в контролера, след което виждаме, че използваме оператора за условно присвояване | | =.
Този оператор в метода, който ни позволява да изпълняваме следната функционалност, ако има хеш на сесия, който съответства на ключ: количка след това връщаме съдържанието му, в противен случай изграждаме нов обект Cart и го присвояваме на sessionn, тогава връщаме стойността му.
Сега, след като усвоихме малко теоретичната част на подхода, ще отидем малко по -задълбочено във функционалността, която трябва да изградим, след като направим пазарската си количка, знаем, че всяка направена продажба трябва да поддържа цената в която е направено за това, което ще създадем таблица, наречена line_items, Това, което ще направи, е да съхрани реда от избора на купувача, нека видим кода, който трябва да поставим в нашата база данни:
 пуснете таблица, ако съществува line_items; създаване на таблица line_items (id int product_id int количество int unit_price десетична (10,2) ограничение fk_items_product първичен ключ (id)); не null auto_increment, не null, не null по подразбиране 0, не null, външен ключ (product_id) препратки към продукти (id), първичен ключ (id)); 

Както можем да видим в това определение на новата ни таблица, добавихме препратка към a външен ключ което свързва полето product_id с полето id на таблицата с продукти, тази връзка ще ни служи, когато генерираме модела.
Тъй като имаме таблицата, можем да взаимодействаме с нея, за това трябва да генерираме нов модел, за да можем да я използваме в нашето приложение. Ще използваме следната команда от нашата командна конзола Ruby on Rails.
 depot> ruby ​​скрипт / генериране на модел LineItem След като моделът бъде генериран, ще добавим следното към него: [i] app / models / line_item.rb [ / i], тъй като не всички бази данни поддържат релсови връзки, обработка от тях е изрично. клас LineItem <ActiveRecord :: База принадлежи_ на: край на продукта 

След като създадохме нашия модел и таблиците за нашето приложение, имаме само част 2 от него, за да завършим разработването му и да можем да имаме функционална количка за пазаруване, която служи като трамплин за прескачане към много по -напреднали приложения.
Продължаваме с изграждането на пазарската количка за нашето приложение, в Ruby on RailsЗа да направим това, нека продължим да разглеждаме модела, който сме изградили, и да видим малко обяснението зад проблема. Релси обработва конвенция, която ви позволява да заключите как да третирате връзките между таблици, след като изрично сме ги декларирали, като му казваме, че нашият модел LineItem има този ред код: принадлежи_ на: продукт, релсовият двигател вече знае, че в таблицата трябва да има поле, наречено product_id.
Сега ще генерираме необходимия код за изграждане на нашата количка за пазаруване, първо трябва да внедрим метода в контролера на нашия магазин, за да добавим артикули в количката. Първо ще намерим този контролер: app / controllers / store_controller.rb и вътре ще създадем метода добави в кошницата със следния код в него.
 def add_to_cart product = Product.find (params [: id]) @cart = find_cart @ cart.add_product (product) redirect_to (: action => 'display_cart') край 

Сега трябва да генерираме нашия клас Cart, този конкретен клас не е свързан с модела ActiveRecord Тъй като не взаимодейства с базата данни, за да улесним нещата, ще я генерираме ръчно в нашата директория приложение / модели, там ще създадем файла cart.rb.
В нашия нов файл ще поставим следното:
 class Cart attr_reader: items attr_reader: total_price def initialize @items = [] @total_price = 0.0 end def add_product (продукт) @items << LineItem.for_product (продукт) @total_price + = product.price краен край 

Сега, когато това е завършено, нека да преминем към нашия модел LineItem и да поставим това, което ни липсва:
 клас LineItem <ActiveRecord :: База принадлежи на: продукт def self.for_product (продукт) item = self.new item.quantity = 1 item.product = продукт item.unit_price = product.price край край 

Нека направим кратко резюме на това, което имаме досега. Вече имаме метода, който ни позволява да добавим артикул в количката, това е добави в кошницата, тогава имаме съдържанието на нашия клас Количка което ни позволява да добавим продукт и да останем последни в нашия клас LineItem можем да извлечем стойностите на тези продукти, които добавяме. Трябва само да внедрим още няколко елемента, така че нашето приложение да работи, първо трябва да добавим действие, което ни позволява да покажем изгледа и, ако това не стане, да го генерираме, за това ще добавим следното:
 def display_cart @cart = find_cart @items = @cart.items край 

Този метод ще влезе в нашия контролер, според нас: app / views / store, ще създадем файл display_cart.rhtml и вътре ще поставим следния код:

Вашата количка съдържа неща.


Разбира се, това все още не работи, трябва да добавим последна стъпка и това е да дефинираме новите си модели в контекста на приложението, за което ще отидем приложение / контролери и ще видим файл с име application.rb в което трябва да поставим следното:
 клас ApplicationController <ActionController :: Базов модел: модел количка: line_item край 

С това вече щяхме да имаме своето Карта за пазаруване основен, но това ще ни доближи до внедряването на краен продукт с напълно разширена функционалност. С това завършваме този урок на Ruby on Rails и е важно да споменем, че трябва внимателно да анализираме кода, който сме поставили, за да разберем причината, поради която работи, и по този начин да генерираме качествени знания.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave