疑问:只有用户登陆以后才能购物,每个用户关联自己的购物车,相同用户再次登录以后购物车里边的物品还在。在做的过程中总是遇到很多问题不知道怎么去解决。 谁能说说这样一种情况,我该怎么设计数据库和 carts_controller 呢?
#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]
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'
我的模型是这样的:
用户表: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 教程)
每一个网站都需要两样东西:
视频教程:讲解怎么购买域名和空间,并安装 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 (美国域名中心) 的几个原因:
高速主机空间 (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 网站,我们这个视频将会教大家如何使你的网站成为一个专业的电子商务网站。同样的,你也不需任何的专业知识来搭建一个功能强大的电子商务网站。