Criação de carrinho de compras - Ruby on Rails

Índice

Antes de podermos construir um carrinho de compras para que um usuário possa selecionar produtos, devemos aprender a usar o sessões Dentro de Ruby on Rails; Quando um usuário estiver navegando em nossa loja virtual, ele possivelmente irá selecionar produtos, o que normalmente se utiliza para este tipo de aplicativo é que o carregamos em um carrinho de compras virtual, onde guardamos o produto, o preço, o custo total do compra e a quantidade dos produtos, isso até que haja um eventual checkout, que é quando o usuário decide fazer a compra.
Para cumprir com o que estamos propondo, devemos manter os produtos que o usuário escolher em nosso aplicativo, para isso utilizaremos o sessões, com esta implementação que faz trilhos Podemos manter os dados disponíveis sem a necessidade de armazená-los em bancos de dados e estarão acessíveis ao usuário que os iniciou a partir do navegador que estabelece a conexão com a aplicação, com o qual as combinações chaveum valor Eles serão armazenados e os teremos disponíveis.
Vamos ver um exemplo de como esse código se parece, vamos criar um novo método em nosso aplicativo no controlador da loja:
 private def find_cart session [: cart] || = Cart.new end 

Apesar de terem cerca de 4 linhas de código, estas envolvem uma complexidade bastante alta, primeiro fazemos o método privado, desta forma evitamos que o rails o disponibilize como uma ação no controlador, então vemos que usamos o operador de atribuição condicional | | =.
Este operador no método que nos permite realizar a seguinte funcionalidade, se houver um hash de sessão que corresponda ao chave: carrinho em seguida, retornamos seu conteúdo, caso contrário, construímos um novo objeto Cart e o atribuímos à sessão, quando retornamos seu valor.
Agora que dominamos um pouco a parte teórica da abordagem, vamos nos aprofundar um pouco mais na funcionalidade que devemos construir, uma vez que façamos nosso carrinho de compras sabemos que cada venda que for feita deve manter o preço em que foi feito para o que vamos criar uma tabela chamada line_items, O que isso fará é armazenar a linha de seleção do comprador, vamos ver o código que temos que colocar em nosso banco de dados:
 elimine a tabela se existir line_items; criar tabela line_items (id int product_id int quantidade int unit_price decimal (10,2) restrição fk_items_product chave primária (id)); não nulo auto_increment, não nulo, não nulo padrão 0, não nulo, a chave estrangeira (product_id) faz referência a produtos (id), chave primária (id)); 

Como podemos ver nesta definição de nossa nova tabela, adicionamos uma referência para um chave estrangeira que associa o campo product_id com o campo id da tabela de produtos, esse relacionamento nos servirá quando gerarmos o modelo.
Como temos a tabela podemos interagir com ela, para isso devemos gerar um novo modelo para que possamos utilizá-lo dentro de nossa aplicação. Usaremos o seguinte comando de nosso console de comando Ruby on Rails.
 depot> ruby ​​script / generate model LineItem Uma vez que nosso modelo é gerado, vamos adicionar o seguinte a ele: [i] app / models / line_item.rb [/ i], já que nem todos os bancos de dados suportam relacionamentos de trilhos, manipulação deles é explicitamente. classe LineItem <ActiveRecord :: Base belongs_to: product end 

Depois de ter criado o nosso modelo e as tabelas para a nossa aplicação, temos apenas a parte 2 para terminar o seu desenvolvimento e poder ter um carrinho de compras funcional que sirva de trampolim para saltar para aplicações muito mais avançadas.
Continuamos com a construção do carrinho de compras para nosso aplicativo, em Ruby on RailsPara fazer isso, vamos continuar olhando o modelo que construímos e ver um pouco a explicação por trás do problema. Trilhos lida com uma convenção que permite inferir como tratar as relações entre as tabelas, uma vez que as tenhamos declarado explicitamente, informando que nosso modelo LineItem tem esta linha de código: belongs_to: product, o motor rails já sabe que dentro da tabela deve haver um campo chamado product_id.
Agora vamos gerar o código necessário para construir nosso carrinho de compras, primeiro devemos implementar o método no controlador de nossa loja para adicionar itens ao carrinho. Vamos primeiro localizar este controlador: app / controllers / store_controller.rb e dentro de nós vamos criar o método Adicionar ao carrinho com o seguinte código nele.
 def add_to_cart product = Product.find (params [: id]) @cart = find_cart @ cart.add_product (product) redirect_to (: action => 'display_cart') end 

Agora devemos gerar nossa classe Cart, esta classe particular não está ligada ao modelo ActiveRecord Por não interagir com o Banco de Dados, para facilitar as coisas vamos gerá-lo manualmente em nosso diretório app / modelos, lá vamos criar o arquivo cart.rb.
Dentro de nosso novo arquivo, colocaremos o seguinte:
 class Cart 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 

Agora com isso concluído, vamos para nosso modelo LineItem e coloque o que está faltando:
 class LineItem <ActiveRecord :: Base belongs_to: product def self.for_product (product) item = self.new item.quantity = 1 item.product = product item.unit_price = product.price item end end 

Vamos fazer um breve resumo do que temos até agora. Já temos o método que nos permite adicionar um item ao carrinho, este é Adicionar ao carrinho, então temos o conteúdo da nossa aula Carrinho o que nos permite adicionar um produto e o último em nossa classe Item da linha podemos extrair os valores dos produtos que adicionamos. Precisamos apenas implementar mais alguns elementos para que nosso aplicativo funcione, primeiro devemos adicionar uma ação que nos permita mostrar a vista e, na falta disso, gerá-la, para isso adicionaremos o seguinte:
 def display_cart @cart = find_cart @items = @ cart.items end 

Este método irá em nosso controlador, agora, em nossa visão: app / views / store, vamos criar um arquivo display_cart.rhtml e dentro colocaremos o seguinte código:

Seu carrinho contém coisas.


Claro que isso ainda não funciona, ainda devemos adicionar uma última etapa e isso é definir nossos novos modelos dentro do contexto da aplicação para isso iremos app / controladores e veremos um arquivo chamado application.rb em que devemos colocar o seguinte:
 class ApplicationController <ActionController :: Base model: cart model: line_item end 

Com isso já teríamos nosso Carrinho de compras básico, mas isso nos aproximará da implementação de um produto final com funcionalidade totalmente estendida. Com isso terminamos este tutorial de Ruby on Rails e é importante mencionar que devemos analisar cuidadosamente o código que colocamos para entender o porquê de seu funcionamento e assim gerar conhecimento de qualidade.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave