方法:how to make the cart in the rails and ruby

在product_controller里面加入action

def add_to_cart 
  @product= Product.find(param[:id])
  current_cart.add_product_to_cart(@product)
  redirect_to :back 
end

修改路由 我们并没有定义current_cart和add_product_to_cart,现在我们要实作这一部分。 在application_collection里面去定义current_cart

helper_method :current_cart 
def current_cart 
  @current_cart ||= find.cart 
end
private 
def find.cart 
  cart = Cart.find_by(id: session[:cart_id])
  if cart.blank?
    cart = Cart.create 
  end 
  session[:cart_id] = cart.id
  return cart 
 end

产生cart和cart_item的model,其中cart_item中有cart_id,product_id,quantity,default: 1. 修改cart model添加add_product_to_cart这个动作。

 has_many : cart_item 
 has_many : products, through: :cart_item, source: :product
 def add_product_to_cart(product)
  ci = cart_item.build
  ci.product = product 
  ci.quantity = 1 
  ci.save 
 end 

限制使用者只能看见自己的订单 def show @order = Order.find(params[:id]) if @order.user! = current_user redirect_to root_path end end 可以写成这样 def @order = current_user.orders.find(params[:id]) end 下面这种写法在开发端,会报错couldn‘t find order with 'id'=1[where"orders"."user_id = ?"] 在用户端会报错404