Javascript 干净的增量!当用户单击指向图像标记的链接时,模型上的属性

Javascript 干净的增量!当用户单击指向图像标记的链接时,模型上的属性,javascript,ruby-on-rails,ruby-on-rails-3.2,Javascript,Ruby On Rails,Ruby On Rails 3.2,我有一个广告模型,基本上有图像、标题和url。我使用CarrierWave作为图像。一切正常,但我想计算印象和点击次数 到目前为止,我添加了两个整数列:印象,点击 我有一个页面控制器,并设置了一个@advert变量,该变量根据页面的不同而变化。阅读此文后,我能够增加印象: def index @advert = Advert.sample @advert.increment! :impressions end 我在增加点击次数时遇到问题;下面是我需要修改的

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


到目前为止,我添加了两个整数列:印象,点击

我有一个页面控制器,并设置了一个@advert变量,该变量根据页面的不同而变化。阅读此文后,我能够增加印象:

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

我在增加点击次数时遇到问题;下面是我需要修改的代码,这样当用户点击图像标签时,他们会像平常一样被带到URL,@advert会增加点击次数列。这是我当前的代码(我使用HAML,这是一个文件中的代码:_advert.html.HAML):


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

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

  • 当用户将鼠标放在图像上时,会看到与最终链接不同的链接。我宁愿让他们看到最终的网址,他们将结束,如果他们点击,而不是重定向只是为了计数他们的点击

  • 如果有人直接调出广告url(例如:/adverts/1),计数器将递增!没有点击


事实上,我并没有一个显示广告的视图,但添加了它来完成这项工作所以说得很清楚这是可行的,但感觉它违反了最佳实践谢谢Aaron。

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

在链接中,将
advert.url
更改为
advert\u路径(advert)
(并设置必要的路径),然后在
adverts\u控制器中

def show
  @advert = Advert.find(params[:id])
  @advert.increment! :clicks
  redirect_to @advert.url
end

首先想到的是添加JavaScript,这样当单击该链接时,它会异步向服务器发送一个请求,然后允许该链接按设计进行。

。谢谢你的建议。我更新了我的问题,提出了一些我在查看show view并重定向用户时可能会遇到的问题。我还调整了您的建议,因为我正在尝试增加!:点击。如果这是最好的答案,我会很高兴地给你信用。我为你的贡献给了你一个+1。谢谢!您可以将
:method=>:post
添加到
链接中,然后发送
post'/adverts/:id=>“广告-控制器-显示”来解决第二个问题。第一个问题更难,但是如果你同意我的解决方案,你可以在
链接中添加一个
title`属性,该链接带有url。谢谢Aaron。我认为,尽管我的广告模式很简单,我们的需求也很简单,但我可以接受这个解决方案。我将:title设置为当鼠标悬停在图像上时显示advert.url。我假设我将绑定到on-click事件,只是不确定如何执行其余操作。我对Javascript还是很差劲(您可以在上执行已接受的答案,只需删除默认行并返回true。
def show
  @advert = Advert.find(params[:id])
  @advert.increment! :clicks
  redirect_to @advert.url
end