Ruby on rails 如何增加购物车轨道的数量
我正在为咖啡馆做购物车,除了增加数量外,一切都很好。当我把一种食物加入购物车时,它只是重复同样的食物,而不是增加数量。我想做一个解决方案来检查…如果食物已经在车里了…而不是添加它只会增加数量。下面是我的控制器,它将食物添加到购物车中。任何帮助都将不胜感激Ruby on rails 如何增加购物车轨道的数量,ruby-on-rails,ruby,cart,Ruby On Rails,Ruby,Cart,我正在为咖啡馆做购物车,除了增加数量外,一切都很好。当我把一种食物加入购物车时,它只是重复同样的食物,而不是增加数量。我想做一个解决方案来检查…如果食物已经在车里了…而不是添加它只会增加数量。下面是我的控制器,它将食物添加到购物车中。任何帮助都将不胜感激 def add_to_cart add_to_session(params[:cafe], params[:food]) redirect_to about_cafe_path(Cafe.find(params[:cafe])) end
def add_to_cart
add_to_session(params[:cafe], params[:food])
redirect_to about_cafe_path(Cafe.find(params[:cafe]))
end
def show_cart
@cart = session[:cart]
end
def clear_cart
session[:cart] = {}
redirect_to show_cart_path
end
def remove
destroy_food(params[:cafe], params[:food])
redirect_to :back
end
private
def add_to_session(cafe_id, food_id)
if session[:cart][food_id].present?
session[:cart][cafe_id][food_id].quantity += 1
else
session[:cart][cafe_id].push food_id
end
end
def destroy_food(cafe_id, food_id)
session[:cart][cafe_id].delete food_id
end
您应该检查
if session[:cart][cafe_id][food_id]。present?
而不是if session[:cart][food_id]。present?
无论如何都不起作用,它会给出错误“字符串未隐式转换为整数”。您现在遇到的错误无论如何都不起作用,它会给出错误“字符串未隐式转换为整数”
是因为第一次向会话添加食物id
时使用的是push
,这意味着会话[:cart][cafe\u id]
是一个数组,当您试图增加数量时,您正试图通过会话[:cart][cafe\u id][food\u id]将其作为散列访问,这就是为什么你会犯这样的错误。但是我没有写答案的原因是,您在会话中存储的food\u id
整数中不存在quantity
,因此您需要一个具有quantity
属性的对象。