rails 如何更新购物车应用程序中的库存数量?
How to update stock quantity in shopping cart applicaiton in rails?
我是 rails 的新手,正在构建一个购物车应用程序。它的作用是:
1.When 用户登录,he/sher 可以将产品添加到购物车。订单与该用户的 ID 一起保存,顺序为 table。
2.It 由产品、订单、用户和订单项组成 table。
3.I 我正在使用种子来显示产品列表。
我想显示产品的可用库存,以及当用户输入数量并将产品添加到购物车时。并且当用户结账时,可用库存应该会减少。
谁能指导我应该使用什么方法以及在哪里编写它们?
编辑:我有如下 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
显示购物车的视图如下: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 %>
单击 'buy' 按钮应转到 remove_stock 方法,然后应减少库存。但是我不确定要走什么路线。
有什么建议吗?
提前致谢。
我试过这种方法,还挺管用的。但是如果你问我这是不是最好的做法,我不确定。
我的模特:
1.User(姓名、电子邮件、密码字段、角色)
2.Product(姓名,creator_id,available_quantity,单位,cost_per_unit)
3.Order (product_id, user_id, quantity_required)
控制器:
1.users_controller
2.products_controller
3.orders_controller
我让产品页面显示可用数量的产品列表,输入 select 所需数量和一个 'Add To Cart' 按钮
当用户输入所需数量并点击“添加到购物车”按钮时,我将按钮点击处理为ajax调用发送
{product_id: '', 数量: '', user_id: ''}
当添加到购物车 ajax 被调用时,它由 orders_controller 的 add_to_cart 操作处理,该操作在订单中创建一行 table user_id,product_id,状态为 'in_progress'。在创建行之前,我还检查同一用户是否在 'in_progress' 状态下拥有相同的产品。如果是这样,我认为他已经更新了他的订单。在那种情况下,我更新现有的列。我在这里启用的另一项检查是检查所需数量是否小于或等于可用数量。
对于 'Remove From Cart' 我遵循了相同的 ajax 调用过程,不同之处在于它从订单 table.
[ 中删除了列=35=]
最后,当用户点击 'Check out' 按钮时,我得到所有处于 'in_progress' 状态的订单,检查可用数量和要求仍然匹配,然后发送订单到账单。结算/付款成功后,将 in_progress 订单的状态标记为“完成”,此处您必须调用 update_stock 方法或简单地更新产品的 available_quantity.
我是 rails 的新手,正在构建一个购物车应用程序。它的作用是: 1.When 用户登录,he/sher 可以将产品添加到购物车。订单与该用户的 ID 一起保存,顺序为 table。 2.It 由产品、订单、用户和订单项组成 table。 3.I 我正在使用种子来显示产品列表。
我想显示产品的可用库存,以及当用户输入数量并将产品添加到购物车时。并且当用户结账时,可用库存应该会减少。
谁能指导我应该使用什么方法以及在哪里编写它们?
编辑:我有如下 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
显示购物车的视图如下: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 %>
单击 'buy' 按钮应转到 remove_stock 方法,然后应减少库存。但是我不确定要走什么路线。
有什么建议吗?
提前致谢。
我试过这种方法,还挺管用的。但是如果你问我这是不是最好的做法,我不确定。
我的模特: 1.User(姓名、电子邮件、密码字段、角色) 2.Product(姓名,creator_id,available_quantity,单位,cost_per_unit) 3.Order (product_id, user_id, quantity_required)
控制器: 1.users_controller 2.products_controller 3.orders_controller
我让产品页面显示可用数量的产品列表,输入 select 所需数量和一个 'Add To Cart' 按钮
当用户输入所需数量并点击“添加到购物车”按钮时,我将按钮点击处理为ajax调用发送
{product_id: '', 数量: '', user_id: ''}
当添加到购物车 ajax 被调用时,它由 orders_controller 的 add_to_cart 操作处理,该操作在订单中创建一行 table user_id,product_id,状态为 'in_progress'。在创建行之前,我还检查同一用户是否在 'in_progress' 状态下拥有相同的产品。如果是这样,我认为他已经更新了他的订单。在那种情况下,我更新现有的列。我在这里启用的另一项检查是检查所需数量是否小于或等于可用数量。
对于 'Remove From Cart' 我遵循了相同的 ajax 调用过程,不同之处在于它从订单 table.
[ 中删除了列=35=]最后,当用户点击 'Check out' 按钮时,我得到所有处于 'in_progress' 状态的订单,检查可用数量和要求仍然匹配,然后发送订单到账单。结算/付款成功后,将 in_progress 订单的状态标记为“完成”,此处您必须调用 update_stock 方法或简单地更新产品的 available_quantity.