快速业务通道

Ruby on rails开发从头来(windows)(九)-给购物车添加错误处理 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

Ruby on rails开发从头来(windows)(九)-给购物车添加错误处理

时间:2011-12-02 博客园 Cure

在上次的内容里,我们演示了怎样构建一个简单的购物车,这次的内容非常简单,给购物车添加错误处理。

对于Web系统来说,并发处理是一个无法回避的问题,我们来模仿一个并发冲突的情景:

1.用户进入购物车页面,看到共有5种商品。

2.管理员在后台维护商品列表,将5种商品中的一种删除掉。

3.客户选中被删除掉的商品,添加到购物车。

在这种情况下,如果不作任何处理的话将会产生一个异常,而我们要作的,是处理这个异常,给用户显示一个商品不存在的错误提示。

1.首先我们需要修改StoreController的add_to_cart方法,下面是add_to_cart方法的代码:

def add_to_cart
  product = Product.find(params[:id])
  @cart = find_cart
  @cart.add_product(product)
  redirect_to(:action => ''display_cart'')
rescue
  logger.error("Attempt to access invalid product #{params[:id]}")
  flash[:notice] = ''Invalid product''
  redirect_to(:action => ''index'')
end

2.修改rails_apps\depot\app\views\store目录下的index.rhtml文件:

在<div id="main">这一句的后面添加下面的代码:

<% if @flash[:notice] -%>
  <div id="notice">
  <%= @flash[:notice] %></div>
<% end -%>

Ruby on rails开发从头来(windows)(九)-给购物车添加错误处理(2)

时间:2011-12-02 博客园 Cure

然后在按照前面提到的3个步骤模拟一个并发冲突的情形,就会在页面上表示的错误信息了,如下图:

Ruby on rails开发从头来(windows)(九)-给购物车添加错误处理 - 编程入门网

下面回头来看看前面的代码:

在add_to_cart方法里,我们使用了rescue代码块来进行异常处理,其中使用了Rails的logger来记录异常,异常信息可以在\rails_apps\depot\log目录下的development.log文件里找到。

在记录的异常后,使用了flash,这是一个类似于HashTable的对象,用来存储键和对应的内容。Rails使用flash来处理异常。

我们使用flash[:notice] = ''Invalid product''来确定异常信息的内容,然后在页面上表示出来,在index.rhtml的代码里进行flash内容的表示:

<% if @flash[:notice] -%>
  <div id="notice">
  <%= @flash[:notice] %></div>
<% end -%>

Ruby on rails开发从头来(windows)(九)-给购物车添加错误处理(3)

时间:2011-12-02 博客园 Cure

下面我们再添加一点处理,当用户的购物车为空的时候,点击Show My Cart链接会表示一个错误信息,提示用户购物车为空:

还是StoreController,修改display_cart方法如下:

def display_cart
 @cart = find_cart
 @items = @cart.items
 if @items.empty?
  flash[:notice] = "Your cart is currently empty"
  redirect_to(:action => ''index'')
 end
end

这样当用户第一次进入购物车页面,不选择任何商品,直接点击Show My Cart链接时会表示一个错误信息,如下图:

Ruby on rails开发从头来(windows)(九)-给购物车添加错误处理 - 编程入门网

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号