# Post visit count

**URL:** <https://www.ruby-forum.com/t/post-visit-count/104724>\
**Category:** Rails\
**Created:** [May 21, 2007, 10:16pm UTC](https://www.ruby-forum.com/t/post-visit-count/104724 "2007-05-21T22:16:58Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![raj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c0e974/32.png) [@raj](https://www.ruby-forum.com/u/raj)\
**Post date:** [May 21, 2007, 10:16pm UTC](https://www.ruby-forum.com/t/post-visit-count/104724/1 "2007-05-21T22:16:58Z")

</div>

I have blog and I want to count number of visits made on each post. I  
want to store the count in the database.

How do i do that.

I am new to rails.

Thank you,  
Raj.

---

<div class="post-metadata">

**Author:** ![raj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c0e974/32.png) [@raj](https://www.ruby-forum.com/u/raj)\
**Post date:** [May 21, 2007, 10:40pm UTC](https://www.ruby-forum.com/t/post-visit-count/104724/2 "2007-05-21T22:40:08Z")

</div>

I would say first off add a view\_count field to your migration for the  
post model  
and then add an increment\_view\_count method to the post model.

You can then call that method from within the view method of your post  
controller.

Something like that anyway.

Keith

---

<div class="post-metadata">

**Author:** ![raj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c0e974/32.png) [@raj](https://www.ruby-forum.com/u/raj)\
**Post date:** [May 21, 2007, 11:48pm UTC](https://www.ruby-forum.com/t/post-visit-count/104724/3 "2007-05-21T23:48:27Z")

</div>

blog controller  
def show  
@post = Post.find(params[:id])  
increment\_count

end

in post model

def increment\_count  
count += 1  
end

model has count field.

I am getting this error

undefined local variable or method `increment\_count’

---

<div class="post-metadata">

**Author:** ![raj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c0e974/32.png) [@raj](https://www.ruby-forum.com/u/raj)\
**Post date:** [May 22, 2007, 12:43am UTC](https://www.ruby-forum.com/t/post-visit-count/104724/4 "2007-05-22T00:43:39Z")

</div>

it works without error but doesnt update the table count value.

---

<div class="post-metadata">

**Author:** ![raj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c0e974/32.png) [@raj](https://www.ruby-forum.com/u/raj)\
**Post date:** [May 21, 2007, 11:57pm UTC](https://www.ruby-forum.com/t/post-visit-count/104724/5 "2007-05-21T23:57:18Z")

</div>

Try this

def show  
@post = Post.find(params[:id])  
@post.increment\_count  
@post.save  
end

def increment\_count  
unless count.nil?  
count += 1  
else  
count = 1  
end  
end

---

<div class="post-metadata">

**Author:** ![raj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c0e974/32.png) [@raj](https://www.ruby-forum.com/u/raj)\
**Post date:** [May 22, 2007, 12:48am UTC](https://www.ruby-forum.com/t/post-visit-count/104724/6 "2007-05-22T00:48:33Z")

</div>

On 5/21/07, raj [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> it works without error but doesnt update the table count value.

@post.save

–  
Greg D.  
[http://destiney.com/](http://destiney.com/)

---

<div class="post-metadata">

**Author:** ![raj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c0e974/32.png) [@raj](https://www.ruby-forum.com/u/raj)\
**Post date:** [May 22, 2007, 12:55am UTC](https://www.ruby-forum.com/t/post-visit-count/104724/7 "2007-05-22T00:55:34Z")

</div>

try this:

def increment\_count  
unless self.count.nil?  
self.count += 1  
else  
self.count = 1  
end  
end

---

<div class="post-metadata">

**Author:** ![raj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c0e974/32.png) [@raj](https://www.ruby-forum.com/u/raj)\
**Post date:** [May 22, 2007, 2:00am UTC](https://www.ruby-forum.com/t/post-visit-count/104724/8 "2007-05-22T02:00:05Z")

</div>

thanks a lot tahts work.

---

<div class="post-metadata">

**Author:** ![raj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c0e974/32.png) [@raj](https://www.ruby-forum.com/u/raj)\
**Post date:** [May 22, 2007, 12:50am UTC](https://www.ruby-forum.com/t/post-visit-count/104724/9 "2007-05-22T00:50:43Z")

</div>

it doesnt work…

NoMethodError in BlogController#show

You have a nil object when you didn’t expect it!  
You might have expected an instance of Array.  
The error occurred while evaluating nil.+

RAILS\_ROOT: ./script/…/config/…  
Application Trace | Framework Trace | Full Trace

#{RAILS\_ROOT}/app/models/post.rb:12:in `increment_count' #{RAILS_ROOT}/app/controllers/blog_controller.rb:23:in`show’  
-e:4:in `load’  
-e:4

c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/base.rb:1095:in  
`send' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/base.rb:1095:in`perform\_action\_without\_filters’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/filters.rb:632:in  
`call_filter' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/filters.rb:634:in`call\_filter’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/filters.rb:638:in  
`call_filter' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/filters.rb:438:in`call’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/filters.rb:637:in  
`call_filter' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/filters.rb:619:in`perform\_action\_without\_benchmark’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/benchmarking.rb:66:in  
`perform_action_without_rescue' c:/ruby/lib/ruby/1.8/benchmark.rb:293:in`measure’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/benchmarking.rb:66:in  
`perform_action_without_rescue' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/rescue.rb:83:in`perform\_action’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/base.rb:430:in  
`send' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/base.rb:430:in`process\_without\_filters’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/filters.rb:624:in  
`process_without_session_management_support' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/session_management.rb:114:in`process’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/base.rb:330:in  
`process' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/dispatcher.rb:41:in`dispatch’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/webrick\_server.rb:113:in  
`handle_dispatch' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/webrick_server.rb:79: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:173:in `start_thread' c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in`start’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' c:/ruby/lib/ruby/1.8/webrick/server.rb:95:in`start’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `each' c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in`start’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start' c:/ruby/lib/ruby/1.8/webrick/server.rb:82:in`start’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/webrick\_server.rb:63:in  
`dispatch' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/commands/servers/webrick.rb:59 c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in`gem\_original\_require’  
c:/ruby/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`require' c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.1/lib/active_support/dependencies.rb:495:in`require’  
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.1/lib/active\_support/dependencies.rb:342:in  
`new_constants_in' c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.1/lib/active_support/dependencies.rb:495:in`require’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/commands/server.rb:39  
c:/ruby/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`gem_original_require' c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in`require’  
script/server:3

#{RAILS\_ROOT}/app/models/post.rb:12:in `increment_count' #{RAILS_ROOT}/app/controllers/blog_controller.rb:23:in`show’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/base.rb:1095:in  
`send' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/base.rb:1095:in`perform\_action\_without\_filters’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/filters.rb:632:in  
`call_filter' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/filters.rb:634:in`call\_filter’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/filters.rb:638:in  
`call_filter' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/filters.rb:438:in`call’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/filters.rb:637:in  
`call_filter' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/filters.rb:619:in`perform\_action\_without\_benchmark’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/benchmarking.rb:66:in  
`perform_action_without_rescue' c:/ruby/lib/ruby/1.8/benchmark.rb:293:in`measure’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/benchmarking.rb:66:in  
`perform_action_without_rescue' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/rescue.rb:83:in`perform\_action’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/base.rb:430:in  
`send' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/base.rb:430:in`process\_without\_filters’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/filters.rb:624:in  
`process_without_session_management_support' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_controller/session_management.rb:114:in`process’  
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action\_controller/base.rb:330:in  
`process' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/dispatcher.rb:41:in`dispatch’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/webrick\_server.rb:113:in  
`handle_dispatch' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/webrick_server.rb:79: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:173:in `start_thread' c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in`start’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' c:/ruby/lib/ruby/1.8/webrick/server.rb:95:in`start’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `each' c:/ruby/lib/ruby/1.8/webrick/server.rb:92:in`start’  
c:/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start' c:/ruby/lib/ruby/1.8/webrick/server.rb:82:in`start’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/webrick\_server.rb:63:in  
`dispatch' c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/commands/servers/webrick.rb:59 c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in`gem\_original\_require’  
c:/ruby/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`require' c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.1/lib/active_support/dependencies.rb:495:in`require’  
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.1/lib/active\_support/dependencies.rb:342:in  
`new_constants_in' c:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.1/lib/active_support/dependencies.rb:495:in`require’  
c:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/commands/server.rb:39  
c:/ruby/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`gem_original_require' c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in`require’  
script/server:3  
-e:4:in `load’  
-e:4

Request

i have that error
