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添加到购物车