Ruby on rails 3 计算Rails中单击链接的次数时出现问题

Ruby on rails 3 计算Rails中单击链接的次数时出现问题,ruby-on-rails-3,link-to,Ruby On Rails 3,Link To,我有一个数据库,其中有许多记录,每个记录都有一个关联的URL。目前,我已经做了一些设置,当人们点击特定记录的链接时,他们会被重定向到相应的URL。代码当前为: <%= link_to image_tag( alldata.picture.to_s + ".gif"), alldata.URL_link %> 控制器中包含以下各项: def clickcountplusone clickeditem = Entiredatabase.find(params[:product_na

我有一个数据库,其中有许多记录,每个记录都有一个关联的URL。目前,我已经做了一些设置,当人们点击特定记录的链接时,他们会被重定向到相应的URL。代码当前为:

<%= link_to image_tag( alldata.picture.to_s + ".gif"), alldata.URL_link %>
控制器中包含以下各项:

def clickcountplusone
  clickeditem = Entiredatabase.find(params[:product_name])
  clickeditem.update_attribute(:click_count => clickeditem.click_count + 1)
end

虽然这不会产生错误,但也不会增加计数。。。有人能解释一下这个问题吗?

你真的不需要为此采取单独的行动。相反,只需使用默认的
show
操作,并在调用操作时递增计数器,如下所示:

def show
   @item = Item.find(params[:id])
   Item.increment_counter(:views, @item.id)
end
但是,每当查看该页面时,这将增加计数器-因此,如果您只想跟踪特定链接后面的视图,可以执行以下操作:

def show
   @item = Item.find(params[:id])
   if params[:from_link]
     Item.increment_counter(:views, @item.id)
   end
end
然后在指向帮助器的链接中,添加一个额外的参数:

link_to(image_tag("blah.jpg"), item_path, {:from_link => true}

希望这有帮助。

您的sintax on
update\u属性
错误:

clickeditem.update_attribute(:click_count => clickeditem.click_count + 1)
应该是:

clickeditem.update_attribute(:click_count, clickeditem.click_count + 1)
小心,
update\u attribute
接收一个
(名称、值)
update\u attributes
接收一个
hash
。更多信息

也看看


我确信:action命令不应该用引号括起来,但我不确定我需要在哪里定义函数…谢谢你,使用你的建议,看起来肯定更有希望。我已将def语句放在应用程序帮助程序中。但是,我遇到了Frankie发现的问题,代码尝试在页面加载后立即运行。仅仅添加:from_link=>true似乎并不能解决问题。这个链接实际上是指向一个外部网站的,所以我不能像他建议的那样将代码放在Show方法中。有没有办法阻止代码运行,除非点击链接?你可以创建
show
方法,增加计数器并重定向到外部Url,因此当用户点击链接时,服务器会将其重定向到Url。还可以使用javascript在单击链接时向服务器发送请求。
clickeditem.update_attribute(:click_count, clickeditem.click_count + 1)
Item.increment_counter(:click_count, @item.id)