1

我有一个基本上有图像、标题和网址的广告模型。我使用 CarrierWave 作为图像。一切正常,但我想计算印象数和点击数。


到目前为止,我添加了两个整数列:展示次数、点击次数

我有一个页面控制器并设置了一个@advert变量,该变量会根据页面而变化。阅读此问题后,我可以增加印象:

 def index  
   @advert = Advert.sample  
   @advert.increment! :impressions  
 end   

我无法增加点击次数| 下面是我需要修改的代码,以便当用户点击 image_tag 时,他们会像往常一样被带到 URL,但 @advert 会增加clicks列。这是我当前的代码(我使用 HAML,这是代码在文件中:_advert.html.haml):

  = link_to image_tag("#{advert.foto_url.to_s}",:alt => "an image ad linking to #{advert.url}", :title => advert.title), advert.url, :target => "blank"

什么是成功增量的最简单、最干净的方法!当有人点击上面的链接时,广告上的点击属性?

更新:

我正在使用下面 Aaron 的建议,但它导致了两个新问题:

  • 当用户将鼠标悬停在图像上时,他们将看到与最终到达的链接不同的链接。我希望他们看到他们点击后最终到达的最终 URL,而不是简单地重定向来计算他们的点击次数。

  • 如果有人直接拉出广告网址(例如:/adverts/1),计数器会增加!无需点击。

我实际上没有 Advert 的显示视图,但添加它以完成此操作。所以说清楚这是可行的,但感觉它违反了最佳实践。不过谢谢亚伦。

4

2 回答 2

2

我认为最简单的方法是将广告图像链接到广告显示操作,这可以增加计数器然后重定向到广告 url。

在您的链接中,更改advert.urladvert_path(advert)(并设置必要的路线),然后在adverts_controller

def show
  @advert = Advert.find(params[:id])
  @advert.increment! :clicks
  redirect_to @advert.url
end
于 2012-11-03T16:31:00.243 回答
1

想到的第一件事是添加 JavaScript,以便在单击该链接时,它会异步向您的服务器发送请求,然后允许该链接按设计通过。

于 2012-11-04T03:35:27.393 回答