hi, i''ve been cracking my head on this one for a while and would be humbly grateful for any pointers i''m working through Agile Web Devopment w Rails and, in the depot example have created the cart class for session handling, but am getting the following error, which suggests the @items variable is not being populated with any data from LineItem NoMethodError (You have a nil object when you didn''t expect it! You might have expected an instance of Array. The error occured while evaluating nil.<<): /app/models/cart.rb:12:in `add_product'' /app/controllers/store_controller.rb:10:in `add_to_cart'' i''ve triple-checked the code, and found the error in the book through the errata, but really am stumped by this error. any suggestions on good troubleshooting techniques . i have tried rake - which says it can''t connect to mysql through the socket file - even though the rest of the db access seems to work fine. i suspect this is part of the problem, seeing as the variable is empty, but don''t know how to pin it down . i''ve also tried irb store_controller, which seems fine, except for: NameError: uninitialized constant ApplicationController from app/controllers/store_controller.rb:1 code (with my some of my own comments as follows). once again, thanks in advance: class Cart attr_reader :items attr_reader :total_price def initialise @items = [] @total_price = 0.0 end def add_product(product) @items << LineItem.for_product(product) #uses helper class method "for_product" in model: line_item.rb, which creates a line_item based on a given product @total_price += product.price end end ====class StoreController < ApplicationController def index # calls salable_items function in the controller to create a list of items that are available for sale depending on date @products = Product.salable_items end def add_to_cart # method to add product with :id to the cart with redirect to display product = Product.find(params[:id]) @cart = find_cart # gets existing cart object or creates new one @cart.add_product(product) # add product method sits in the Cart class (in models) redirect_to(:action => ''display_cart'') end def display_cart @cart = find_cart @items = @cart.items end private # everything below here is private. any public actions need to be above this part of the class def find_cart # creates a new cart session object if one doesn''t exist pg 81 @cart = session[:cart] ||= Cart.new end end -- Posted via http://www.ruby-forum.com/.