Forum: Ruby on Rails NoMethodError in StoreController#add_to_cart

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
75d7870be8e6d4e5510b74280b47c144?d=identicon&s=25 kapil kaushik (Guest)
on 2007-07-15 15:04
(Received via mailing list)
Hi

I am new to Rails, and I was trying to follow the "Agile Web Development
With Rails" textbook. As I was trying to create the "Add_to_cart"
application, I found that when I clicked the "Add to Cart" link on my
http://localhost:3000/store page, I got the following error:

NoMethodError in   Store#display_cart
============================
Showing app/views/store/display_cart.rhtml where line #20 raised:   You
have
a nil object when you didn't expect it!
The error occurred while evaluating nil.product

Extracted source (around line #20): 17:     </tr>
18: <%
19:     for item in @items
20:         product = item.product
21: -%>
22:     <tr>
23:         <td><%= item.quantity %></td>

Just for pointer, I had actually got to the correct page once, but then
I
skipped the "Iteration C2: Handling Errors" part in the tutorial and
went
straight to the "8.5 Iteration C3: Finishing the Cart" part, and
implemented
the empty_cart function there. I have been getting this problem since
then
(when I implemented this function and clicked the link in browser and
then
came back to add more objects to the cart). Could it be that I have
deleted
the object or something? After some googling I thought that the problem
was
actually related to the session, and so i tried to clear the session by
using:

   1. rake db:sessions:clear
   2. rake tmp:sessions:clear

But even this did not solve the problem. So I am clueless as of now.
Below
is the code for reference:

in store_controller.rb
===============
    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
        if @items.empty?
            redirect_to_index("Your cart is currently empty")
        end
    end

    def find_cart
        session[:cart] ||= Cart.new
    end
====================

Any help would be really appreciated !!!

Thanks,
Kapil
75d7870be8e6d4e5510b74280b47c144?d=identicon&s=25 kapil kaushik (Guest)
on 2007-07-17 06:50
(Received via mailing list)
Hi

I am still waiting for a reply !!

Thanks,
Kapil

On 7/15/07, kapil kaushik <kaushik.kapil@gmail.com> wrote:
> Showing app/views/store/display_cart.r html where line #20 raised:   You
>
>    1. rake db:sessions:clear
>         @cart.add_product(product)
>
>     def find_cart
>         session[:cart] ||= Cart.new
>     end
> ====================
>
> Any help would be really appreciated !!!
>
> Thanks,
> Kapil
>



--
I can sum up everything i learned about life in three words -- IT GOES
ON !!
75d7870be8e6d4e5510b74280b47c144?d=identicon&s=25 kapil kaushik (Guest)
on 2007-07-20 11:27
(Received via mailing list)
I have been waiting for some help from the gurus out here for last 5
days.
Anything I have been trying is not working !!

Thanks,
Kapil

On 7/15/07, kapil kaushik <kaushik.kapil@gmail.com> wrote:
> Showing app/views/store/display_cart.r html where line #20 raised:   You
>
>    1. rake db:sessions:clear
>         @cart.add_product(product)
>
>     def find_cart
>         session[:cart] ||= Cart.new
>     end
> ====================
>
> Any help would be really appreciated !!!
>
> Thanks,
> Kapil
>



--
I can sum up everything i learned about life in three words -- IT GOES
ON !!
4765b690d8d04b089b0a7b0ee7768ebc?d=identicon&s=25 Stijn Pint (spint)
on 2007-07-20 11:42
Everything looks normal at first sight...
what does your @items collection look like ? Do "p @items" in your
controller, it will be displayed in your console.
75d7870be8e6d4e5510b74280b47c144?d=identicon&s=25 kapil kaushik (Guest)
on 2007-07-22 22:55
(Received via mailing list)
Hi Stijn ,

Thanks !!

On printing the items, I saw that my product did not have any order_id.
On
thorough analysis of my code, I found that I had mistakenly added an
extra
constructor in the line_items.rb file which was causing the problem. But
it
took me decent amount of time to do the code review. Things are working
fine
now.

Apologies for bothering the community unnecessarily.

Regards,
Kapil

But i had thought that the


On 7/20/07, Stijn Pint <rails-mailing-list@andreas-s.net> wrote:
>
--
I can sum up everything i learned about life in three words -- IT GOES
ON !!
This topic is locked and can not be replied to.