《Web开发敏捷之道》2版 P130 使购物车采购数量减1(Ajax实现)

[b]局部模板_cart_item.rhtml[/b]
<% if cart_item == @current_item %>
<tr id="current_item" class="cart-item">
<% else %>
<tr class="cart-item">
<% end %>
<td width="5%"><%= cart_item.quantity %>*</td>
<td width="70%"><%= h cart_item.title %></td>
<td width="12%">¥<%= cart_item.price%></td>
<td width="13%">
<%= link_to_remote "减少",
:url => {:action => "decrease_cart_item",:id => cart_item.product} %>
</td>
</tr>


[b]控制器中修改成[/b]:
  def decrease_cart_item
product = Product.find(params[:id])
@cart = session[:cart]
@current_item = @cart.descrease_quantity(product)
redirect_to_index unless request.xhr?
end



[b]模型cart.rb对应内容修改成[/b]:
  def descrease_quantity(product)
current_item = @items.find {|item| item.product == product}
if current_item.quantity>1
current_item.descrease_quantity
else
@items.delete(current_item) #从数组中删除这个对象
current_item = nil #因为该对象已经从数组中删除了,后面程序要进行判断是否存在,所以要把它的值赋值为nil
end
current_item
end



[b]视图下建立decrease_cart_item.rjs文件,内容[/b]:
page[:cart].replace_html :partial => 'cart', :object => @cart
if @current_item
page[:current_item].visual_effect :highlight,:startcolor => "#88ff88",:endcolor => "#114411"
end


这样做的效果是:当前行的采购数量减少时,当前行也会用高亮渐变效果显示。如果是该行的数量被减少到0,那么该行就会被删除,而不再能对它使用渐变效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值