Ruby on rails 如何在我的产品控制器中创建购物车项目的新实例
我正在创建一个简单的商店 我的模式是:Ruby on rails 如何在我的产品控制器中创建购物车项目的新实例,ruby-on-rails,ruby,model-view-controller,Ruby On Rails,Ruby,Model View Controller,我正在创建一个简单的商店 我的模式是: cart_items(product_id, cart_id, quantity) carts() products(title, price, inventory) 现在,我要做的是在产品页面上创建一个购物车按钮。然后在每个产品的显示页面中,有一个add\u to\u cart按钮,该按钮使用product\u id和最近购物车的cart\u id创建一个cart\u项目 我知道如何在控制台上执行此操作 CartItem.create(cart:
cart_items(product_id, cart_id, quantity)
carts()
products(title, price, inventory)
现在,我要做的是在产品页面上创建一个购物车按钮。然后在每个产品的显示页面中,有一个add\u to\u cart
按钮,该按钮使用product\u id
和最近购物车的cart\u id
创建一个cart\u项目
我知道如何在控制台上执行此操作
CartItem.create(cart: Cart.last product: 'some product', quantity: 1)
因为唯一会改变的参数是产品id
。我想我需要在ProductsController
中创建一个名为add\u to\u cart
的方法,该方法获取当前product\u id
并创建行项目
我是RubyonRails新手,我不知道如何正确地做到这一点,也不知道我所尝试的方法是否正确
我如何在我的产品展示页面上有一个按钮,上面写着add\u to\u cart
,并用该product\u id
和最后一个cart创建cart\u项目
更新:
add_to_cart
的路径是add_to_cart
。当我创建Add_to_cart_path
时,出现了一个错误,询问您的意思是“Add_to_cart_path_url”
,如果我更改它,会导致另一个错误
我当前遇到的错误是参数数量错误(给定1,应为0)
我的方法是
def add_to_cart
product_id = params[:product_id]
CartItem.create(product: Product.find(product_id), cart: Cart.last, quantity: 1)
end
要从产品展示页面获取产品,只需添加一个带有链接的产品id
link_to 'Add to cart', your_add_to_cart_controller_path(product_id: @product.id)
并在您的add\u to\u cart
方法中获取此product\u id
更新
def add_to_cart
product = Product.find_by(id: params[:product_id]) if params[:product_id].present?
CartItem.create(product: product, cart: Cart.last, quantity: 1) if product.present?
end
我认为这是正确的。它工作得更好,但是,它现在给出了一个错误,添加到购物车不需要任何参数,但它得到了一个。您可以为add\u to\u card
方法添加路由,并请添加问题中的错误。还可以添加当您从terminalUpdated post中单击add\u to\u cart
按钮时得到的参数。不过,我不知道你最后一句话是什么意思。当我在我的应用程序上并单击“添加到购物车”时,您是否询问终端中显示的错误?请检查我的更新答案,当您单击链接时,我询问您的方法和日志的路线。请共享此命令的输出<代码>耙路| grep添加到购物车