快速业务通道

Ruby on rails开发从头来(windows)(十)-清空购物车和格式化金额 - 编程入门网

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

Ruby on rails开发从头来(windows)(十)-清空购物车和格式化金额

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

在上次的内容里,我们给购物车添加了错误处理,这次来实现清空购物车和金额的格式化处理。

到现在我们还没有给显示购物信息列表页面的“empty cart”链接添加任何处理。我们首先来实现这个功能:

1.在Store_Control.rb文件中添加empty_cart方法:

def empty_cart
find_cart.empty!
flash[:notice] = ''Your cart is now empty''
redirect_to(:action => ''index'')
end

2.接下来是cart.rb文件,添加下面的代码:

def empty!
   @items = []
   @total_price = 0.0
end

好了,就是这么简单,现在点击empty cart链接,会重新定位到index页面,并且显示一个消息,如图:

Ruby on rails开发从头来(windows)(十)-清空购物车和格式化金额 - 编程入门网

Ruby on rails开发从头来(windows)(十)-清空购物车和格式化金额(2)

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

嗯,到这里你肯定看到store_controller中关于显示异常信息的flash的操作部分有重复代码,这是代码的坏味道,现在我们使用Extract Method,将这些代码提取到一个方法中,下面是修改后的代码,我们修改了add_to_cart,display_cart,empty_cart三个方法,并且添加了一个redirect_to_index方法:

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_index(''Invalid product'')
end
  
def display_cart
@cart = find_cart
@items = @cart.items
if @items.empty?
redirect_to_index("Your cart is currently empty")
end
end
  
def empty_cart
find_cart.empty!
redirect_to_index(''Your cart is now empty'')
end
  
def redirect_to_index(msg = null)
flash[:notice] = msg
redirect_to(:action => ''index'')
end

另外,cart.rb里也有重复的代码,我们重构一下:

def empty!
@items = []
@total_price = 0.0
end
  
def initialize
empty!
end

Ruby on rails开发从头来(windows)(十)-清空购物车和格式化金额(3)

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

整理完了代码,再来看看另一个小功能,格式化金额:

1.在rails_apps\depot\app\helpers目录下的application_helper.rb中添加代码:

def fmt_dollars(amt)
sprintf("$%0.2f", amt)
end

2.修改rails_apps\depot\app\views\store目录下的display_cart.rhtml文件中的两行:

<td align="right"><%= item.unit_price %></td>
<td align="right"><%= item.unit_price * item.quantity %></td>

<td id="totalcell"><%= (@cart.total_price)%></td>

变为

<td align="right"><%= fmt_dollars(item.unit_price) %></td>
<td align="right"><%= fmt_dollars(item.unit_price * item.quantity) %></td>

<td id="totalcell"><%= fmt_dollars(@cart.total_price)%></td>

现在可以看看最后的结果了,如图:

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号