我是rails和构建购物车应用程序的新手。其功能如下:1.当用户登录时,他/她能够将产品添加到购物车中。订单与该用户的id一起保存在订单表中。2.由产品、订单、用户和订单项目表组成。3.我正在使用种子来显示产品列表。
我想显示产品的可用库存,以及用户输入数量并将产品添加到购物车时的库存。当用户结账时,可用库存应该减少。
有人能指导我应该使用什么方法以及在哪里写吗?
编辑:我有如下的OrderItems控制器:
class OrderItemsController < ApplicationController
before_action :authenticate_user!
after_action :cart, only: %i[create update destroy]
def create
@order = current_order
@order_item = @order.order_items.new(order_item_params)
@order.save
session[:order_id] = @order.id
end
def remove_stock
product = @order.order_items.find(params[:id])
product.stock -= self.quantity
product.save
redirect_to cart_path
end
end
显示Cart的视图如下:carts/show.html.erb:
<h4 class='text-right'>Total Price: <span style='color: green'><%= number_to_currency order_item.total_price %></span></h4>
<%= link_to 'Buy', remove_stock(order_item) %>
<% end %>
点击"购买"按钮,它应该转到remove_stock方法,然后库存应该减少。然而,我不知道该用什么路线来遵循这一点。
有什么建议吗?
提前谢谢。
我试过这种方法,它有点管用。但如果你问我这是否是最好的做法,我不确定。
我的模型:1.用户(姓名、电子邮件、密码字段、角色(2.产品(名称、创建者id、可用数量、单位、成本_单位(3.订单(product_id、user_id、quantity_required(
控制器:1.用户_控制器2.产品_控制器3.订单_控制器
-
我的产品页面显示了可用数量的产品列表,输入以选择所需数量,并有一个"添加到购物车"按钮
-
当用户输入所需的数量并点击"添加到购物车"按钮时,我处理了按钮点击到发送的ajax调用
{product_id:",quantity:",user_id:"}
-
当调用Add To Cart ajax时,它由orders_controller的Add_To_art操作处理,该操作在订单表中创建一行,其中user_id、product_id和status为"in_progress"。在创建行之前,我还检查同一用户是否具有处于"in_progress"状态的同一产品。如果是的话,我认为他已经更新了他的命令。在这种情况下,我会更新现有的列。我在这里启用的另一个检查是检查所需数量是否小于或等于可用数量。
-
对于"从购物车中删除",我遵循了相同的ajax调用过程,区别在于它从订单表中删除了列。
-
最后,当用户单击"结账"按钮时,我会得到所有处于"in_progress"状态的订单,检查可用数量和所需的仍然匹配,然后将订单发送到账单。计费/付款成功后,将in_progress订单的状态标记为"已完成",并在此处您必须调用update_stock方法或简单地更新产品的可用数量。