- 浏览: 30199 次
- 性别:
- 来自: 苏州
最新评论
文章列表
Run follow command in terminal:
$ sudo iwlist wlan0 scanning essid <ssid>
If it could list all detail information of your ssid in terminal, then you could click the Knetworkmanager icon which is displayed in the notification area. You could see the ssid has been displayed in the list. Then dou ...
到现在位置,我们已经完成了产品列表和购物车功能。虽然看起来已经很棒了,但是,有一个细节,那就是当用户登录之后,就会有一个没有任何物品列表的购物车在那里。我们希望在这种情况下可以不显示它。因为有很多时候顾客来了只是转转,并不打算订购些什么。一个空购物车在那里不仅占了空间,而且也不是很美观。
书中其实讲了4中方法实现这个需求。前三个都不是很好,第四个其实是一个创建自定义Helper的范例,做出来的效果可以说是这4个方法中最好的一个。我们在这里一个一个的说说。
第一个方法是最简单的方法。也就是在显示购物车信息的代码段上加上一个条件判断。详细代码如下:
<% unless cart.items.e ...
当客户点击了“Add to Cart“按钮之后,购物车的数据改变了。我们希望能够让用户清楚的看到是那个是哪个发生了改变。那么,我们让当前被改变(个数变化,或者添加了)的那个产品被高亮一段时间。
之前我们通过“javascript_include_tag”引入了一些JavaScript的库文件。其中有一个是effects.js的库文件。这个库文件为我们提供了很多视觉效果的实现,其中有一个叫做“Yellow Fade Technique”的效果,正式我们这次所需要的。这个效果是使用指定的开始颜色高亮指定的对象,然后渐渐消退,直到到达终了颜色结束。并使得指定对象的背景色恢复到高亮前的状态。
要实现这个 ...
上篇笔记中,我们通过partial把购物车信息放到了index页面的Sidebar上。当我们点击“Add to Cart”按钮时,Sidebar上的商品和数目会改变。但是,我们同时会发现,刷新了的不仅仅是购物车信息,整个页面都刷新了。如果你的浏览器中显示的本来就是页面的最顶端,就不会有什么感觉。但是如果你选择的产品是在你浏览到了页面的中间或者更下面,当你点击了“Add to Cart”之后,页面又会回到最顶端。以至于你必须再去寻找你刚才看到了哪里。这样往复的动作,直到你感到很崩溃。
那么,我们这节来改善一下用户体验。让用户点击了“Add to Cart”之后,只是刷新购物车信息部分的内容,而不会 ...
之前,当用户点击了“Add to Cart“按钮之后,页面会跳转到add_to_cart页面。用户想继续选购产品需要点击浏览器的回退按钮才能再回到产品列表页面。另外,用户在查看产品列表页面是如果想看看自己已经选了些什么东西,以及需要花多少钱时,在不添加新的产品到购物车的情况下,其实是做不到的。这个用户带来了很大的不便。
所以,我们想改进我们的网站。把购物车的列表摆放到页面的Sidebar上。这样用户不论在什么时候都可以查看自己已经选了些什么,以及要花多少钱。
那么,我们开始吧。
要做到这些,我们需要一些Ajax的技术。Rails提供了一个叫partial的模板来实现它。
首先,我们来分析以下:
...
这一篇,我们来完成我们的购物车的制作吧。
首先,为了客户能够很方便的把购物车中的产品全部清空,我们需要给我们的购物车添加一个“Empty cart”的按钮。
在add_to_cart.html.erb文件最后加入如下代码:
<%= button_to 'Empty cart', :action => 'empty_cart' %>
这里action指向的具体的处理方法还没有实现,所以,我们还需要在store_controller.erb文件中添加这个方法。
具体代码如下:
def empty_cart
session[:cart] = nil
flash[:noti ...
这一部分其实东西很少,这里不做过多的描述,仅仅是记录下来,以便今后查询使用。
以add_to_cart方法为例,当该方法收到一个错误的产品id时,会得到一个ActiveRecord::RecordNotFound错误。对应的包含错误处理的代码如下:
def add_to_cart
product = Product.find(params[:id])
@cart = find_cart
@cart.add_product(product)
rescue ActiveRecord::RecordNotFound
logger.error("Attempt to ...
上篇笔记我们已经让我们的网站能够保存客户选购的产品了,但是,似乎少了点什么。恩,少了每样产品用户到底要买多少的数据。我们这次就把这个功能加上。
那么,我们需要一个能够描述用户选的产品以及数量的对象。好,我们就来定义一个叫“CartItem”的类完成这个任务吧。这个类将被保存在depot/app/modules目录中。
CartItem类的代码如下:
class CartItem
attr_reader :product, :quantity
def initialize(product)
@product = product
@quantity = 1
...
上篇笔记中,我们为保存用户选购的商品提供了场所。那么,这篇我们就要开始制造我们的购物车了。
首先,我们要为购物车定义一个类,这个类现在只做很简单的事情,就是保存用户选择的商品。我们管这个类叫“Cart”,我 ...
depot在线商店需要一个能保存用户选购的各种各样的商品的地方,而对于Web程序而言,每个页面和请求的生命周期都是瞬间了,彼此之间没有任何的状态记录。当用户在一个页面选择了一样商品,再去另一个页面选择另一样商品的时候,上一个页面的数据已经荡然无存了。就像狗熊掰苞米,掰一个放在胳肢窝下,再掰一个放在胳肢窝下,之前的那个就没有了。(哈哈!这个比喻也许不那么恰当。 )
那么,我们怎么保存用户选购的商品呢?答案是选用Session机制来保存类似的数据。一般来说,Session的数据可以使用一个文件保存在Server端,或是通过Cookies保存在浏览器端。如果把数据保存在Server端的文件中,对于只在 ...
这篇只有很少的一点内容,只是说说如何格式化价格数据成为货币的格式,以及在价格后面添加一个“添加到购物车”的按钮。
1. 格式化价格数据:
一般,我们在格式化数据的时候,首先想到的总是sprintf之类的具有格式化字 ...
典型的网站一般都具有一致的布局,ASP.NET中使用TemplatePage就提供了一个做到这件事的途径。它使得每个页面都在一个确定的页面框架中显示。那么,Rails中能否做到,又是如何做到这一点的呢?
这一节的内容就要说明这个问题。 ...
按照书上的引导,我们现在该是增加一个新的Controller的时候了。这个Controller用于将产品归类,并产生归类后的产品列表页面。它的名字叫store。
现在我们创建这个Controller:
引用ruby script/generate controller store index
执行这个命令之 ...
我们的程序现在显示出来的画面还是那么的原始和难看,接下来我们要做一些工作来美化它。
首先,作为准备,我们需要现添加一些用来测试的数据。
执行下面的命令:
引用ruby script/generate migration add_test_data
它会为我们创建一个用来添加数据的migration文件。但是这个rb文件生成出来是空的。方便起见,我们按照书中说的,下载本书配套的几个文件,包括一个migration的rb文件,几张数据需要的图片文件和一个CSS文件。
相关文件的下载链接如下:
Migration文件:
Download:depot/db/migrate/20080601000 ...
数据的校验是在model中进行的。所有的model类都从ActiveRecord::Base继承。该基类已经为我们完成了很多的工作,如数据库映射、创建、更新和查询等。
下面我们来说一些常用校验处理的实现方法。这些校验都是通过在product.rb文 ...