gpt4 book ai didi

ruby-on-rails - 添加到目录中的购物车按钮(Ruby on Rails、Spree gem)

转载 作者:行者123 更新时间:2023-12-04 02:48:32 26 4
gpt4 key购买 nike

如何为目录中的每个产品添加添加到购物车按钮?我创建了链接

  <%= link_to fast_cart_path do %>
Add To Cart
<% end %>

和 Action ,OrdersController#update 的副本

  def fast_cart
populator = Spree::OrderPopulator.new(current_order(true), current_currency)
if populator.populate(params.slice(:products, :variants, :quantity))
current_order.create_proposed_shipments if current_order.shipments.any?

fire_event('spree.cart.add')
fire_event('spree.order.contents_changed')
respond_with(@order) do |format|
format.html { redirect_to cart_path }
end
else
flash[:error] = populator.errors.full_messages.join(" ")
redirect_to :back
end
end

我没有任何错误,但由于某种原因产品没有添加到购物车。

最佳答案

如果您查看 Spree::OrderPopulator 中的代码: https://github.com/spree/spree/blob/v2.0.4/core/app/models/spree/order_populator.rb#L20

您会看到它从传入的散列中获取变量,并尝试添加从散列中的产品或变体传入的任何内容。

你上面的代码接受

params.slice(:products, :variants, :quantity)

这是正确的,但是,您指定的链接不会向参数添加任何产品或变体。因此,它尝试不添加任何内容,成功地不添加任何内容,然后继续。

您应该看一下 Spree 中更新订单的代码:

https://github.com/spree/spree/blob/v2.0.4/frontend/app/views/spree/orders/edit.html.erb#L14

或将新产品添加到购物车的代码:

https://github.com/spree/spree/blob/v2.0.4/frontend/app/views/spree/products/_cart_form.html.erb

如果您 pry 开它们,看看那里发生了什么,您应该对如何将产品添加到购物车有更好的了解。


另一种选择是查看 Spree API 并使用此调用向您的订单添加订单项:

http://api.spreecommerce.com/v1/order/line_items/#creating-a-line-item

关于ruby-on-rails - 添加到目录中的购物车按钮(Ruby on Rails、Spree gem),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18275831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com