Count number of downloads and link_to

Hello,

I have a download link on my page, whick looks like that :

<%=link_to "Download", @photo.public_filename, :class => "thickbox"%>
As you see, I m displyaing an image in a thickbox popup. However I
would like to count the number of times the user clicks on this link,
to get a number of downloads, and so increment a value in my db each
time the link is clicked. But how can I achieve this. Is there a way
to couple an ajax call to this link ?

Also, I want to display the number of downloads for " today ". Anyone
has an idea of how I can do this.

Thx in advance,

Regards

Hmmm, off the top of my head I would say add two fields to the photo
model, one 'download_count_total', and 'download_count_today'. Then
write a helper function link_to_with_count that would look something
like:

def link_to_with_count(name, model, options)
  model.update_attributes(:download_count_total =>
model.download_count_total.next,
    :download_count_today => model.download_count_total.next)
  link_to name, model, options
end

Then, you would need to write a script that runs every night at
midnight and resets every photos download_count_today attribute.

What's the last line code used to ?

" link_to name, model, options "

Thx,

Joel

First I'd create a column in the table that's storing your photos
named "download_count". Then add a line to your routes file, something
like "yourcontroller/update_download_count/:id/:count", then create an
action in the controller:

def update_download_count
   YourModel.update_attribute :download_count, params[:count] + 1
end

and finally, change your link to:
<%=link_to_remote "Download", @photo.public_filename, :url => {:action
=> update_download_count, :id => @photo.id, :count =>
@photo.download_count}, :html => {:class => "thickbox"} %>

And to display today's downloads, add a named route to your model:
named_route :todays_downloads, {:conditions => {:created_at =>
Date.today}}

Just something quick I thought up, it should help you get on the right
track :slight_smile:

Sorry, named_route should be named_scope, and the outer { } should be
removed from it.