浏览 1541 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-08-26 关键字: web开发敏捷之道
我今天在照着《web开发敏捷之道2e》的depot的任务D:Ajax初体验中,有些代码有错误,而且那个添加商品高亮显示的效果一直弄不出来,完全按照书上的代码了。
P119 <%= form_remote_tag :url => { :action => :add_to_cart, :id => product } %>
<%= submit_tag "Add to Cart" %>
<% end %>
应为: <%= form_remote_tag :url => { :action => :add_to_cart, :id => product } %>
<%= submit_tag "Add to Cart" %>
<%= end_form_tag %>
在显示新加入购物车高亮的效果时有时会正常,有时错误,提示找不到那个标识符,如下图 好像是第一次添加商品时就会出错,之后再次添加同一个商品时就不会出错。 把rjs中的:current_item改为:cart就是直接高亮显示整个购物车就不会出错。 page[:cart].visual_effect :highlight,
:startcolor => "#88ff88" ,
:endcolor => "#114411"
请问一下大家在实验这个例子有没有遇到这种情况,为什么会这样? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-08-26
错误发现了,原来是在depot_r/app/models/cart.rb中
def add_product(product)
current_item = @items.find {|item| item.product == product}
if current_item
current_item.increment_quantity
else
current_item = CartItem.new(product)
@items << current_item
end
current_item
end
我把这个方法的else后面那两句简写成一句 @items << CartItem.new(product) 导致在第一次添加商品时导致product 对象没有被保存current_item中,所以在第一次添加时会出现错误。 |
|
| 返回顶楼 | |
|
时间:2007-08-27
那本书上有好多错误的说
def add_to_cart begin product=Product.find(params[:id]) 书上这里是这样的 @product=Product.find(params[:id]) rescue ActiveRecord::RecordNotFound logger.error("Attempt to access invalid product #{params[:id]}") redirect_to_index("Invalid product") else @cart =find_cart #@cart.add_product(product) @current_item=@cart.add_product(product) redirect_to_index unless request.xhr? end end |
|
| 返回顶楼 | |
|
时间:2007-08-27
178518 写道 那本书上有好多错误的说
def add_to_cart begin product=Product.find(params[:id]) 书上这里是这样的 @product=Product.find(params[:id]) rescue ActiveRecord::RecordNotFound logger.error("Attempt to access invalid product #{params[:id]}") redirect_to_index("Invalid product") else @cart =find_cart #@cart.add_product(product) @current_item=@cart.add_product(product) redirect_to_index unless request.xhr? end end 你说的这个在这个贴里有说: http://www.javaeye.com/topic/102909 |
|
| 返回顶楼 | |
|
时间:2007-08-31
该书在网上下载的英文pdf就是照楼主的写法。
但查阅rails api的文档,发现还是应该采用中文书上的写法才正确,否则每次加入到购物车的都是第1条产品,得不到product的id号。 我用的rails是1.2.3的版本,正确写法如下: <% form_remote_tag :url => {:action => :add_to_cart,:id => product} do %> <%= submit_tag '加入购物车' %> <% end %> |
|
| 返回顶楼 | |
|
时间:2007-09-02
第2个高亮显示的问题,
因为:@cart_items << CartItem.new(product)一句,没有得到current_item,还是应该照原书的写。 |
|
| 返回顶楼 | |
|
时间:2007-09-07
正在学习,发现书中119页代码
<%= form_remote_tag :url => {:action => :add_to_cart,:id => product} do %> <%= submit_tag "Add to cart" %> <% end %> 多了一个“=”号,正确写法 <% form_remote_tag :url => {:action => :add_to_cart,:id => product} do %> <%= submit_tag "Add to cart" %> <% end %> |
|
| 返回顶楼 | |
|
时间:2007-09-09
呵呵~~英文版的是有这个问题,我调试了半天,后来在add_product方法中增加一个current_item返回,OK了。。。
|
|
| 返回顶楼 | |






