我有一个图像库的模型。我想跟踪图像获得的视图数量。目前我在控制器中实现了这个目标
def show
@article = Post.find(params[:id])
@article.views += 1
@article.save
end
但是,这只会在访问完整视图时递增视图计数器(此方法也会阻止我缓存模板)。我还希望在索引集合视图中显示缩略图时增加视图(因为这些也是有效的印象),以及搜索,在“喜欢”,“收藏夹”等其他演示文稿中。
换句话说,只要显示图像的完整图像或拇指,我想增加视图计数器。是否有任何模式/范例可以在rails中实现这一目标?
我是否应该在javascript中执行此操作,以便在页面加载后,我会获得页面上每个帖子ID的列表,然后ajaxly命中另一个控制器,为所有这些帖子增加视图计数器?
答案 0 :(得分:0)
你可以覆盖你的路线。我曾在一个项目中做过一次:
/ user_images /#{random} .jpg =>我把它路由到一个控制器,控制器从数据库中取出图像,递增它然后服务它。这也有效果,如果有人交叉这个图像,你会计算它。
但是有一个大的但是 它的性价比。我开始使用imagehoster,非常可怕!然后我改变了它。我每小时都用一个cronjob传递我的apache的日志文件,并计算视图。然后我将它添加到数据库中。这解决了我所有的性能泄漏。