簡體   English   中英

添加到購物車數量邏輯RoR

[英]Add to cart quantity logic RoR

我創建了一個名為add_to_cart的方法,每次用戶將商品添加到購物車時都會調用該方法-然后該方法檢查該商品是否已經存在,如果確實存在,它將數量增加+1。

我遇到的問題是,如果購物車中尚不存在某種產品,我不確定如何從模型中調用我的Items“創建”操作(在Items控制器中)。

我想我可以使用Item.create(...),但我只想調用Items控制器中已經存在的create動作即可。

目前我有:

產品#索引視圖

 ...
 <%= button_to "Add to Cart", add_to_cart_path(:product_id => product), :method => :post %>
 ...

路線

 ...
 post '/add_to_cart/:product_id' => 'carts#add_to_cart', :as => 'add_to_cart'
 ...

推車控制器

 class CartsController < ApplicationController

 def show
   @cart = current_cart
 end

 def add_to_cart
   current_cart.add_item(params[:product_id])
   redirect_to cart_path(current_cart.id)
 end

 end

推車型號

class Cart < ActiveRecord::Base
has_many :items

def add_item(product_id)
        item = items.where('product_id = ?', product_id).first
    if item
        # increase the quantity of product in cart
        item.quantity + 1
        save
    else
        save # "THIS IS WHERE I WANT TO CALL ITEMS CONTROLLER CREATE"
    end
end

項目控制器

class ItemsController < ApplicationController

def create
    @product = Product.find(params[:product_id])
    @item = Item.create!(:cart => current_cart, :product => @product, :quantity => 1, :unit_price => @product.price)
    redirect_to cart_path(current_cart.id)
end

end

非常感謝您提供有關如何實現重定向到我的create動作的幫助! :)

您的Cart模型不能調用控制器方法,也不需要。

您的方法應如下所示:

class Cart < ActiveRecord::Base
  has_many :items

  def add_item(product_id)
    item = items.find_or_create_by_product_id(product_id)
    item.quantity += 1
    item.save
  end
end

然后是你的CartsController add_item方法可以將用戶重定向到應該的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM