In the Agile Rails tutorial I am revisiting building a cart. I have
followed the steps given in the book to create the class
''Cart''
thus:
class Cart
attr_reader :items
attr_reader :total_price
def add_product(product)
@items << LineItem.for_product(product)
@total_price += product.price
end
def initialize
@items = []
@total_price = 0.0
end
end
~
"app/models/cart.rb"
I have wired together the other bits in
app/controllers/store_controller.rb and app/models/line_item.rb
class StoreController < ApplicationController
def add_to_cart
product = Product.find(params[:id])
@cart = find_cart
@cart.add_product(product)
redirect_to(:action => ''display_cart'')
end
def display_cart
@cart = find_cart
@items = @cart.items
end
def index
@products = Product.salable_items
end
private
def find_cart
session[:cart] ||= Cart.new
end
end
~
"app/controllers/store_controller.rb"
*******
class LineItem < ActiveRecord::Base
belongs_to :product
def self.for_product(product)
item = self.new
item.quantity = 1
item.product = product
item.unit_price = product.price
item
end
end
~
"app/models/line_item.rb"
*****
When I attempt to add an item from store/index.rhtml I get this:
> NoMethodError in Store#add_to_cart
>
> undefined method `add_product'' for #<Cart:0xb7838a68
> @total_price=0.0, @items=[]>
>
> RAILS_ROOT: script/../config/..
I have successfully completed this part of the tutorial at least
three times now and I cannot for the life of me see what I have
done differently this time. Can another pair of eyes see what I
cannot?
Regards,
Jim
--
*** e-mail is not a secure channel ***
mailto:byrnejb.<token>@harte-lyne.ca
James B. Byrne Harte & Lyne Limited
vox: +1 905 561 1241 9 Brockley Drive
fax: +1 905 561 0757 Hamilton, Ontario
<token> = hal Canada L8E 3C3