gpt4 book ai didi

ruby-on-rails - 哈希的未定义方法 `add'

转载 作者:数据小太阳 更新时间:2023-10-29 09:02:06 25 4
gpt4 key购买 nike

我正在实现这个购物车 gem,但是当我在 Controller 中将商品添加到购物车时遇到问题。我尝试使用 rails console 执行代码,它工作正常。不确定为什么我会从 Controller 收到此错误。

错误:

enter image description here

products_controller.rb:

helper_method :add_to_cart

def add_to_cart
@cart = session[:active_cart]
@product = Product.find(params[:product_id])
@cart.add(@product, 99.99)
end

路线.rb

post '/add_to_cart/:product_id' => 'products#add_to_cart', :as => 'add_to_cart'

views/products/index.html

        <% products.each do |product| %>
<%= button_to "Add to Cart", add_to_cart_path(:product_id => product.id), :method => :post %>

<a href="<%= addresses_path(:brand => product.brand.id, :product_id => product.id) %>" class="list-group-item">
<%= image_tag product.image.url(:square), class: "product-list-group-item" %>
<%= product.name %>
<span class="badge">$<%= number_with_precision(product.price, precision: 2) %></span>
</a>
<% end %>

最佳答案

@cart = session[:active_cart] 这将返回一个散列,这就是为什么在调用它时会出现上述错误的原因:

@cart.add(@product, 99.99)

因为没有为散列对象实现add方法。

我建议您像这样检查 Controller 中的 @cart 对象:

@cart = session[:active_cart]
puts @cart.inspect
puts @cart.class

然后您会看到,它是一个散列对象,您应该能够从该散列中提取所需的 cart 对象。

主要问题是从 session 中获取正确的@cart 对象。一旦你这样做了,它就应该可以工作了:)

关于ruby-on-rails - 哈希的未定义方法 `add',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33194960/

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