Hey Dan,

Why don't you pass an unique ID parameter in each link (either GET or
POST) and use this in a before_filter in the application controller?
The filter would just increment the count for that ID in a separate
table. This is a general design that would work for anything. Later
you can use this information with some sort of mapping that says what
each ID means (or just put a title for each ID in the table).
Something like:

== Links

<a href="http://mysite.com?ID=1";>Link 1</a>

== application.rb

  before_filter :inc_link_count

  def inc_link_count
    li = Link.find(params[:ID])
    li.count++
    li.save
  end


Cheers, Sazima

On Sep 25, 7:45 pm, andres <[EMAIL PROTECTED]> wrote:
> On Thu, 2008-09-25 at 13:52 -0700, Dan Paul wrote:
> > Thanks for the response, sorry I'm totally new to this any way you can
> > elaborate or show example? Any help would be greatly appreciated,
> > thanks in advance
>
> > On Sep 25, 11:53 am, andres <[EMAIL PROTECTED]> wrote:
> > > On Thu, 2008-09-25 at 11:35 -0700, Dan Paul wrote:
> > > > Hello,
>
> > > > So I am trying to simply track the number of hits a link has received
> > > > and display that number on the site so other users can see which links
> > > > are more popular. So once the link is clicked on it adds a +1 value to
> > > > the hits column in the database and then redirects the person to the
> > > > url that the link is supposed to go to. So far this is what I have.
>
> > > > I have a tutorials table in my database and a column for hits and a
> > > > column for url.
>
> > > > ** tutorials_controller.rb **
>
> > > > def update_hits_count
> > > >     [EMAIL PROTECTED] :hits, params[:count].size + 1
> > > >    if @tutorial.save
> > > >       redirect_to url_for(@tutorial.url)
> > > >    end
> > > > end
>
> > > modify the method so it suits any controller,
> > > like in self.update_attribute
> > > add the method to application_controller
> > > whenever you want to add a hit you call it,
> > > like in
> > > def index
> > >     update_hits_count
> > > end
>
> it really depends on what you want to track
> hits on a single controller/action (probably writing on a file) or in
> many
> more likely you'll need a tracking model "hits"
> that has something like
> controller :string
> action :string
> hits :integer
>
> define a addhit method on the model
> self.hits = self.hits +1
>
> create a method in application controller
> def update_hit_counts
> @hit.find(:first, :controller => controller, :method => method)
> @hit.addhit
>
> (you can use the current method and controller form rails environmental
> variables)
>
> then when you want to register a hit
> inside the method you call
> update_hit_counts
>
> (ads one query and one write per request)
>
>
>
>
>
> > > > ** view/tutorials/show.html.erb **
>
> > > > <% for tutorial in @tutorials %>
> > > >     <%=link_to tutorial.title, {:action => 'update_hits_count', :count
> > > > => tutorial.hits} %>
> > > > <% end %>
>
> > > > That is what I have so far and when you click on the link the hits
> > > > column in the tutorials table just gets set to null and it does not
> > > > redirect them to the proper url.  Any help would be greatly
> > > > appreciated.  Thanks in advance.
>
> > > --
>
> > >  smime.p7s
> > > 7KViewDownload
>
> > >
> --
> Andres Paglayan
> CTO, StoneSoup LLC
> Ph: 505 629-4344
> Mb: 505 690-2871
> FWD: 65-5587
> Testi. Codi. Vinci.
>
>  smime.p7s
> 7KViewDownload

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to