【发布时间】:2011-11-02 12:38:15
【问题描述】:
我正在建立一个在线商店只是为了提高 Rails 技能。我想让未经授权的用户将商品添加到购物车。为此,我应该以某种方式在会话或其他地方存储购物车对象和添加到其中的项目。我怎样才能做到这一点?
【问题讨论】:
标签: ruby-on-rails session shopping-cart
我正在建立一个在线商店只是为了提高 Rails 技能。我想让未经授权的用户将商品添加到购物车。为此,我应该以某种方式在会话或其他地方存储购物车对象和添加到其中的项目。我怎样才能做到这一点?
【问题讨论】:
标签: ruby-on-rails session shopping-cart
您可以简单地向用户会话添加一个哈希(如果他还没有登录,它也会创建)。
session[:cart] = Array.new if !session[:cart]
然后当他向购物车添加一个对象时,您可以像这样在会话中向数组中添加一个哈希。
session[:cart] << hash.new(:product_id => <id>, :quantity => 1337)
当然,您也可以像这样创建一个模型Cart并将cart_id 写入会话。
session[:cart_id] = <cart_id>
但是使用这种方法(通常是退出更好的方法)的缺点是在会话被销毁之前您无法销毁条目,因此您可能会在使用所有旧购物车时遇到一些麻烦。
【讨论】: