I am really new to Ruby and Rails but as you probably see I am trying
to get the shopping card working from the book. I am getting this
error but I really don't know what to do. I have looked up several of
topics that stated the same problem but as far as I am, nothing has
helped me out yet. Is there something wrong with the Product model?
This is in the StoreController and I believe it is all good.
def add_to_cart
@cart = find_cart
product = Product.find(params[:id])
@cart.add_product(product)
end
Well, let's see, the title of your post is "ArgumentError in
StoreController#add_to_cart, wrong number of arguments (1 for 0)." I
assume that this is because that's the error you are seeing.
So what could that mean? It means that someone is calling
StoreController#add_to_cart with an argument, but add_to_cart doesn't
accept any arguments.
The problem isn't in the definition of add_to_cart, controller action
methods don't take ruby arguments. So...
Somewhere some other code. A view? A model method, some other
controller method is calling add_to_cart with a parameter.
That's why the error page should show a stack trace, doesn't it? That
should point you to the code which called add_to_cart which is the
code which needs to be fixed.
First of all, thank you for your reply, it finally works!
So what did I do?I analyzed the stack trace and concluded that the
problem was situated in the cart.rb
At line 13:
@items << CartItem.new(product)
It could not assign a new product to the CartItem model so I looked at
the cart_item.rb:
The "initialize" - which stands for constructor in Ruby I guess - was
spelled wrong and that was my problem! Now it seems to work properly.