1:处理错误
Rails定义了一个flash的结构,在处理请求的过程中把任何东西放进去,其用来收集错误信息。比如,add_to_cart() action发现传入了货品id不合法,它就会将错误信息保存在flash中,并重定向到index() action。
def add_to_cart
begin
@product=Product.find(params[:id])
rescue ActiveRecord::RecordNotFound
logger.error("A error id")
flash[:notice]="error product id"
redirect_to:action=>:index
else
@cart=find_cart
@cart.add_product(product)
end
end
#rescue子句拦下Product.find()抛下的异常
#Rails的日志记录器记下了这个错误,每个控制器都可以通过logger属性访问日志记录器,这里的日志级别是error
# 创建了一条flash提示信息,和hash一样使用,用:notice作为存放提示信息的键
#redirect_to()方法将浏览器重定向 index控制器
如果出现异常,我们可以查看日志文件的末尾处,可以看到输出的错误信息(log目录下的 development.log文件)
在页面显示flash信息
<% if flash[:notice] %>
<%= flash[:notice] %>
<% end %>
2: 清空session对象(紧接上篇)
<%= link_to "清空购物车" ,:action=>:empty_cart %>
def empty_cart
session[:cart]=nil
flash[:notice]="购物车已清空"
redirect_to:action=>:index
end