Rails 想做一个购物网站的购物车,结果一天没有搞出来

mlb0903 · 2013年03月14日 · 最后由 powerfulstore 回复于 2016年06月29日 · 4988 次阅读

疑问:只有用户登陆以后才能购物,每个用户关联自己的购物车,相同用户再次登录以后购物车里边的物品还在。在做的过程中总是遇到很多问题不知道怎么去解决。 谁能说说这样一种情况,我该怎么设计数据库和 carts_controller 呢?

敏捷开发这本书不就是有个购物车的例子的嘛,具体有什么问题发上来看看啊

#1 楼 @Teddy 敏捷开发那本书里边的购物车,我看了也做了,但是每次不同的用户登录上去以后,他的购物车里边是同样的商品。我现在的问题是每个注册的用户要有自己的购物车,不知道怎么来实现

购物车 belongs_to 用户,然后 item_line belongs_to 购物车,很类似的啊,你直接贴代码或者报错信息吧

#3 楼 @Teddy def add_to_cart @user = User.find(session[:user_id]) product = Product.find(params[:id]) title = product.title description = product.description price = product.price image_url = product.image_url cart = Cart.new cart.title = title cart.description = description cart.price = price cart.image_url = image_url cart.user_id = @user.id session[:cart] = nil #判断该用户的购物车是否为空 if @user.cart == nil then session[:cart] = Hash.new end cart_shop = session[:cart]

@cart_shop = session[:cart]

if cart_shop.has_key?(cart) then cart_shop[cart] = cart_shop[cart]+1 else cart_shop[cart] = 1 end redirect_to "/store/index" end

这个是照着另一本书做的,不报错误,但是不能够保存到购物车

#3 楼 @Teddy 按照那本敏捷开发遇到的错误是这个 NoMethodError in CartsController#add_to_cart

You have a nil object when you didn't expect it! You might have expected an instance of ActiveRecord::Base. The error occurred while evaluating nil.delete Rails.root: C:/Users/malibin/My Documents/Aptana Studio 3 Workspace/shopping

Application Trace | Framework Trace | Full Trace app/controllers/carts_controller.rb:10:in `add_to_cart'

不知道你这个问题解决没有,我也遇到类似问题。mlb0903 @Teddy

我的模型是这样的:
用户表:Users has_one : cart 购物车表:Carts belongs_to :user (表中通过 user_id 关联) 用户表与购物车表为一对一的关系。 之后对于购物车与商品之间我才用多对多,通过关系表连接 购物车表:has_many :line_items 商品表:has_many :line_items 关系表:belongs_to :flower belongs_to :cart | id | user_id | created_at | updated_at | +----+---------+---------------------+---------------------+ | 4 | NULL | 2013-10-09 09:19:30 | 2013-10-09 09:19:30 | 似乎这个方法需要修改,我一直没能该对 def current_cart Cart.find(session[:cart_id]) rescue ActiveRecord::RecordNotFound cart = Cart.create session[:cart_id] = cart.id cart end 因为当购物车 cart 为空时,就会报错。可能是由于 cart 模型验证,user_id 为空,cart 没能建立。但奇怪的是 line_items 表中数据会写入,此时 cart_id 为空。 控制器代码 cart_controller.rb def create @cart = Cart.new(cart_params) respond_to do |format| if @cart.save format.html { redirect_to @cart, notice: 'Cart was successfully created.' } format.json { render action: 'show', status: :created, location: @cart } else format.html { render action: 'new' } format.json { render json: @cart.errors, status: :unprocessable_entity } end end end def cart_params params.require(:cart).permit(:user_id) # :cart.user_id = current_user.id

end line_items_controller.rb def create @cart = current_cart # @cart = Cart.new() flower = Flower.find(params[:flower_id]) @line_item = @cart.add_flower(flower.id) # @line_item = @cart.line_items.build(:flower => flower)

if @line_item.save redirect_to @line_item.cart # redirect_to flowers_url else render 'new' end end

建立 WordPress 电子商务网站视频 (WooCommerce 教程)

每一个网站都需要两样东西:

  1. 域名 (网址,如 jiustore.com)
  2. 空间 (储存和把你的网站发布到互联网去) 好消息是,域名和空间都可以在同一家公司购买,它们加起来的费用是每年几十美元。如果你在 US Domain Center 购买的话,你可以直接登陆你的帐户点击安装 WordPress。你也会在以下的视频教程里看到。

视频教程:讲解怎么购买域名和空间,并安装 WordPress (12 分钟) 视频链接:https://www.jiustore.com/start-wordpress-site/

安装 WordPress 后,你的网站就马上上线了。你只要在手机,电脑,或平板电脑的网站输入栏打进你的域名,你就可以看到你的网站。

关于 US Domain Center US Domain Center(美国域名中心) 是一家知名的美国域名注册商。它不但为世界各地 (中国,美国,加拿大,和澳大利亚等等) 提供域名注册服务,它还提供高速空间 (主机空间)。还有,如果使用 US Domain Center 的域名和空间,你无需向政府备案。还有,该公司也接受不同的货币支付 (人民币,美元,和加币等等)。 美国域名中心:http://www.usdomaincenter.com/

域名注册 (Domain Registration) 选择 US Domain Center (美国域名中心) 的几个原因:

  1. 域名查询及批量查询及注册易如反掌
  2. 免费赠送专业电邮 (如,[email protected])
  3. 自动将专业邮件指向已存在的邮箱帐号
  4. 拥有全部域名管理权,可以随意更改信息
  5. 免费的 DNS 服务和管理
  6. 免费的域名防盗保护,防止域名未经准许被转出 US Domain Center
  7. 免费提供各种域名注册的售前售后咨询服务

高速主机空间 (Hosting) US Domain Center 也提供高速主机空间 (Hosting)。该公司的全球数据中心让网页更快加载,并保证 99.9% 正常运行时间。

英文官网:http://www.usdomaincenter.com/

中文官网:http://cn.usdomaincenter.com/

1) 用 WordPress 搭建完整网站视频教程 (从零开始只需 1 小时) 该视频对所有的浏览者或读者免费开放。你只要跟着这个视频教程做,你就可以自己动手搭建一个专业的网站。我们会一步步教你如何建立你的第一个网站。

在 YouTube 观看:

在土豆观看:http://www.tudou.com/programs/view/eDy87n_Cbpo/

2) 建立 WordPress 电子商务网站视频 (WooCommerce 教程)

如果你已经根据第一个视频教程建立了一个网站或者你已经拥有自己的 WordPress 网站,我们这个视频将会教大家如何使你的网站成为一个专业的电子商务网站。同样的,你也不需任何的专业知识来搭建一个功能强大的电子商务网站。

观看链接:https://www.jiustore.com/video/

需要 登录 后方可回复, 如果你还没有账号请 注册新账号