如何解决在Rails中单击链接的问题计数次数
|| 我有一个数据库,其中包含许多记录,每个记录都有一个关联的URL。目前,我已经进行了一些设置,以便当人们单击特定记录的链接时,他们会被重定向到相应的URL。该代码当前为:<%= link_to image_tag( alldata.picture.to_s + \".gif\"),alldata.URL_link %>
这很好。我现在想修改它,以便在单击链接时使用一个名为:click_count
的参数,该参数通常将所有记录设置为0。
仔细阅读,我相信您可以使用以下形式进行此操作:
<%= link_to image_tag( alldata.picture.to_s + \".gif\"),alldata.URL_link,{:controller => params[:controller],:action => \"clickcountplusone\",:product_name => alldata.product_name} %>
在控制器中具有以下内容:
def clickcountplusone
clickeditem = Entiredatabase.find(params[:product_name])
clickeditem.update_attribute(:click_count => clickeditem.click_count + 1)
end
尽管这不会产生错误,但是也不会增加计数数量。有人可以阐明这个问题吗?
解决方法
您对
update_attribute
的罪税是错误的:
clickeditem.update_attribute(:click_count => clickeditem.click_count + 1)
应该:
clickeditem.update_attribute(:click_count,clickeditem.click_count + 1)
请注意,update_attribute
接收(name,value)
,update_attributes
接收hash
。更多信息在这里
还看看增加计数器
Item.increment_counter(:click_count,@item.id)
, 您实际上不需要为此执行单独的操作。相反,只需使用默认的simply12ѭ动作,并在每次调用该动作时就递增计数器,如下所示:
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帮助器中,添加一个额外的参数:
link_to(image_tag(\"blah.jpg\"),item_path,{:from_link => true}
希望这可以帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。