# Help -- NoMethodError in

**URL:** <https://www.ruby-forum.com/t/help-nomethoderror-in/52114>\
**Category:** Rails\
**Created:** [January 11, 2006, 1:03am UTC](https://www.ruby-forum.com/t/help-nomethoderror-in/52114 "2006-01-11T01:03:30Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![chrismalek](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/6de8d8/32.png) [@chrismalek](https://www.ruby-forum.com/u/chrismalek)\
**Post date:** [January 11, 2006, 1:03am UTC](https://www.ruby-forum.com/t/help-nomethoderror-in/52114/1 "2006-01-11T01:03:30Z")

</div>

Hi,

I am just learing Rails and I am going through the Agile Web D.  
with Rails book. I am receiving:

NoMethodError in Store#add\_to\_cart  
undefined method `add\_product’ for #StoreController:0x3764d80  
RAILS\_ROOT: ./script/…/config/…

Application Trace | Framework Trace | Full Trace  
#{RAILS\_ROOT}/app/controllers/store\_controller.rb:12:in `add_to_cart' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:853:in`send’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action\_controller/base.rb:853:in  
`perform_action_without_filters' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/filters.rb:332:in`perform\_action\_without\_benchmark’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action\_controller/benchmarking.rb:69:in  
`perform_action_without_rescue' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/benchmarking.rb:69:in`measure’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action\_controller/benchmarking.rb:69:in  
`perform_action_without_rescue' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/rescue.rb:82:in`perform\_action’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action\_controller/base.rb:369:in  
`send' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:369:in`process\_without\_session\_management\_support’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action\_controller/session\_management.rb:116:in  
`process' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/dispatcher.rb:38:in`dispatch’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/webrick\_server.rb:117:in  
`handle_dispatch' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/webrick_server.rb:83:in`service’  
c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in`run’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:155:in `start_thread' c:/ruby/lib/ruby/1.8/webrick/server.rb:144:in`start’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:144:in `start_thread' c:/ruby/lib/ruby/1.8/webrick/server.rb:94:in`start’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:89:in `each' c:/ruby/lib/ruby/1.8/webrick/server.rb:89:in`start’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:79:in `start' c:/ruby/lib/ruby/1.8/webrick/server.rb:79:in`start’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/webrick\_server.rb:69:in  
`dispatch' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/commands/servers/webrick.rb:59 c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:18:in`require\_\_’  
c:/ruby/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:18:in  
`require' c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/active_support/dependencies.rb:214:in`require’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/commands/server.rb:28  
c:/ruby/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:18:in  
`require__' c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:18:in`require’  
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/active\_support/dependencies.rb:214:in  
`require' ./script/server:3 #{RAILS_ROOT}/app/controllers/store_controller.rb:12:in`add\_to\_cart’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action\_controller/base.rb:853:in  
`send' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:853:in`perform\_action\_without\_filters’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action\_controller/filters.rb:332:in  
`perform_action_without_benchmark' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/benchmarking.rb:69:in`perform\_action\_without\_rescue’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action\_controller/benchmarking.rb:69:in  
`measure' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/benchmarking.rb:69:in`perform\_action\_without\_rescue’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action\_controller/rescue.rb:82:in  
`perform_action' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:369:in`send’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action\_controller/base.rb:369:in  
`process_without_session_management_support' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/session_management.rb:116:in`process’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/dispatcher.rb:38:in  
`dispatch' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/webrick_server.rb:117:in`handle\_dispatch’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/webrick\_server.rb:83:in  
`service' c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in`service’  
c:/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' c:/ruby/lib/ruby/1.8/webrick/server.rb:155:in`start\_thread’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:144:in `start' c:/ruby/lib/ruby/1.8/webrick/server.rb:144:in`start\_thread’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:94:in `start' c:/ruby/lib/ruby/1.8/webrick/server.rb:89:in`each’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:89:in `start' c:/ruby/lib/ruby/1.8/webrick/server.rb:79:in`start’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:79:in `start' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/webrick_server.rb:69:in`dispatch’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/commands/servers/webrick.rb:59  
c:/ruby/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:18:in  
`require__' c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:18:in`require’  
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/active\_support/dependencies.rb:214:in  
`require' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/commands/server.rb:28 c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:18:in`require\_\_’  
c:/ruby/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:18:in  
`require' c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/active_support/dependencies.rb:214:in`require’  
./script/server:3  
Request  
Parameters: {“id”=\>“2”}

Show session dump

* * *

:cart: !ruby/object:Cart  
items: []  
total\_price: 0.0  
flash: !ruby/hash:ActionController::Flash::FlashHash {}  
Response  
Headers: {“cookie”=\>[], “Cache-Control”=\>“no-cache”}

---

<div class="post-metadata">

**Author:** ![chrismalek](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/6de8d8/32.png) [@chrismalek](https://www.ruby-forum.com/u/chrismalek)\
**Post date:** [January 11, 2006, 1:20am UTC](https://www.ruby-forum.com/t/help-nomethoderror-in/52114/2 "2006-01-11T01:20:46Z")

</div>

2006/1/11, Chris McDevitt [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Hi,
> 
> I am just learing Rails and I am going through the Agile Web D.  
> with Rails book. I am receiving:
> 
> NoMethodError in Store#add\_to\_cart  
> undefined method `add\_product’ for #StoreController:0x3764d80  
> RAILS\_ROOT: ./script/…/config/…

Doeas your StoreController have an add\_product method?

If not, you probably need to add it.

If you think you do, please post the relevant code and lets have a  
look at it. Also, what does the code in the Store#add\_to\_cart method  
look like?

Douglas

---

<div class="post-metadata">

**Author:** ![chrismalek](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/6de8d8/32.png) [@chrismalek](https://www.ruby-forum.com/u/chrismalek)\
**Post date:** [January 11, 2006, 1:23am UTC](https://www.ruby-forum.com/t/help-nomethoderror-in/52114/3 "2006-01-11T01:23:48Z")

</div>

Hi Chris,  
This means that your store\_controller.rb file is missing a function

def add\_to\_cart  
product = Product.find(params[:id])  
…  
…  
end

you might have misspelled the name?

On 1/10/06, Chris McDevitt [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> #{RAILS\_ROOT}/app/controllers/store\_controller.rb:12:in `add_to_cart' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/benchmarking.rb:69:in `dispatch’  
> c:/ruby/lib/ruby/1.8/webrick/server.rb:89:in `each' c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/active_support/dependencies.rb:214:in c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:853:in `perform\_action\_without\_rescue’  
> c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/webrick\_server.rb:117:in  
> c:/ruby/lib/ruby/1.8/webrick/server.rb:89:in `start' `require’
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> * * *
> 
> Rails mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

–

---

<div class="post-metadata">

**Author:** ![chrismalek](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/6de8d8/32.png) [@chrismalek](https://www.ruby-forum.com/u/chrismalek)\
**Post date:** [January 11, 2006, 1:34am UTC](https://www.ruby-forum.com/t/help-nomethoderror-in/52114/4 "2006-01-11T01:34:11Z")

</div>

In theory, the add\_product() is located in the model cart…

Here is my store\_controler:

class StoreController \< ApplicationController

```
  def index
	 @products = Product.salable_items

end

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

private
def find_cart
	# Conditional Assignment Operator
	# In hash session it looks for key work "cart"
	# If found, it returns the current cart
	# If not found a new cart is created and stored in the session hash
	session[:cart] ||= Cart.new
end

```

end

Teh missing function is located in \app\model\cart.rb:

class Cart  
attr\_reader :items  
attr\_reader :total\_price  
def initialize  
@items = []  
@total\_price = 0.0  
end  
def add\_product(product)  
@items \<\< LineItem.for\_product(product)  
@total\_price += product.price  
end  
end

And…  
application.rb

# Filters added to this controller will be run for all controllers in

the application.

# Likewise, all the methods added will be available for all controllers.

class ApplicationController \< ActionController::Base

model :Cart  
model :Line\_item  
end

M Daggett wrote:

> Hi Chris,  
> This means that your store\_controller.rb file is missing a function
> 
> def add\_to\_cart  
> product = Product.find(params[:id])  
> …  
> …  
> end
> 
> you might have misspelled the name?
> 
> On 1/10/06, Chris McDevitt [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > #{RAILS\_ROOT}/app/controllers/store\_controller.rb:12:in `add_to_cart' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/benchmarking.rb:69:in `dispatch’  
> > c:/ruby/lib/ruby/1.8/webrick/server.rb:89:in `each' c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/active_support/dependencies.rb:214:in c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:853:in `perform\_action\_without\_rescue’  
> > c:/ruby/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/webrick\_server.rb:117:in  
> > c:/ruby/lib/ruby/1.8/webrick/server.rb:89:in `start' `require’
> > 
> > –  
> > Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> > 
> > * * *
> > 
> > Rails mailing list  
> > removed\_email\_address@domain.invalid  
> > [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)
> 
> –

---

<div class="post-metadata">

**Author:** ![chrismalek](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/6de8d8/32.png) [@chrismalek](https://www.ruby-forum.com/u/chrismalek)\
**Post date:** [January 11, 2006, 2:42am UTC](https://www.ruby-forum.com/t/help-nomethoderror-in/52114/5 "2006-01-11T02:42:11Z")

</div>

This line:

```
@cart = add_product(product)

```

Should be

```
@cart.add_product(product)

def add_to_cart
	product = Product.find(params[:id])
	@cart = find_cart
	@cart.add_product(product)
	redirect_to(:action => 'display_cart')
end
```

---

<div class="post-metadata">

**Author:** ![chrismalek](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/6de8d8/32.png) [@chrismalek](https://www.ruby-forum.com/u/chrismalek)\
**Post date:** [January 11, 2006, 2:36am UTC](https://www.ruby-forum.com/t/help-nomethoderror-in/52114/6 "2006-01-11T02:36:06Z")

</div>

Douglas L. wrote:

> 2006/1/11, Chris McDevitt [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > Hi,
> > 
> > I am just learing Rails and I am going through the Agile Web D.  
> > with Rails book. I am receiving:  
> > Douglas

Any Sugestions?

---

<div class="post-metadata">

**Author:** ![chrismalek](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/6de8d8/32.png) [@chrismalek](https://www.ruby-forum.com/u/chrismalek)\
**Post date:** [January 11, 2006, 3:33am UTC](https://www.ruby-forum.com/t/help-nomethoderror-in/52114/7 "2006-01-11T03:33:30Z")

</div>

Tom F. wrote:

> This line:
> 
> @cart = add\_product(product)
> 
> Should be
> 
> @cart.add\_product(product)
> 
> def add\_to\_cart  
> product = Product.find(params[:id])  
> @cart = find\_cart  
> @cart.add\_product(product)  
> redirect\_to(:action =\> ‘display\_cart’)  
> end

That worked! Thanks very very much!
