It seems that @cart.items is returning floats, not items. Maybe check out your cart model.
Line 9 of line_item.rb
In Ruby, a function returns the value of the last line. The for_product function is returning the product.price, instead of the item.
You want to add a line to return the item itself:
def self.for_product(product) item = self.new item.quantity = 1 item.product = product item.unit_price = product.price item end