浏览 158 次
|
该帖已经被评为新手帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-06-07
在学习第八章 迭代C2 :创建购物车 遇到如下问题
引用 NoMethodError in StoreController#add_to_cart
undefined method `product' for #<Product:0x4a02900> RAILS_ROOT: ./script/../config/.. D:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:1860:in `method_missing' #{RAILS_ROOT}/app/models/cart.rb:16:in `add_product' #{RAILS_ROOT}/app/models/cart.rb:16:in `each' #{RAILS_ROOT}/app/models/cart.rb:16:in `find' #{RAILS_ROOT}/app/models/cart.rb:16:in `add_product' #{RAILS_ROOT}/app/controllers/store_controller.rb:11:in `add_to_cart' 我的cart.rb 文件代码如下 class Cart
attr_reader :items
def initialize
@items = []
end
def add_product(product)
current_item = @items.find {|item| item.product == product}
if current_item
current_item.increment_quantity
else
@items << CartItem.new(product)
end
end
end
store_controller.rb代码如下 class StoreController < ApplicationController def index @products = Product.find_products_for_sale end def add_to_cart @cart = find_cart product = Product.find(params[:id]) @cart.add_product(product) end private def find_cart session[:cart] ||= Cart.new end end 提示是找到不到items[]数据中的product方法, 也就是这一句上, current_item = @items.find {|item| item.product == product}
一直都找不原因 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-10
问题应该出在session中
由于迭代前session中存放的是product 而迭代后是存放的cartitem 而session中的数据没有得到及时的更新 清空一下以前的session应该就可以了 rake db:sessions:clear |
|
| 返回顶楼 | |



