如何修复重复的标签?

用户可以提交习惯,目标,价值观和统计数据的标签。

当用户点击tag_cloud中的tag_cloud他会被重定向到包含该标签的所有实例的主页,但由于某种原因,属于Habits的实例正在重复。

在此处输入图像描述

有关为什么会这样的想法?

pages_controller

 @habits = current_user.habits.tagged_with(params[:tag]) 

habit.rb

 class Habit < ActiveRecord::Base belongs_to :user acts_as_taggable before_save :set_tag_owner def set_tag_owner # Set the owner of some tags based on the current tag_list set_owner_tag_list_on(self.user, :tags, self.tag_list) # Clear the list so we don't get duplicate taggings (hmmm what does this mean? I copied this code & comment from somewhere else) # self.tag_list = nil end 

views / home.html.erb中: root’pages root 'pages#home'

我试图只发布相关的东西,但这里是它的要点

你有没有尝试取消注释:

 self.tag_list = nil 

我想你是从这个来源或链接的stackoverflow问题复制过来的? 在您的代码注释中,您询问了以下注释行的内容:

清除列表,以便我们不会获得重复的标记

我挖掘了源代码并找到了你要调用的方法:

 def set_owner_tag_list_on(owner, context, new_list) 

因此,当最后一个参数被称为new_list时,我想你输入set_owner_tag_list_on方法的旧列表将再次设置相同的标签。 因此,没有所有者的旧tag_list在那里设置为nil,因为tag_list似乎只包含没有所有者的标签(根据文档 )

虽然我真的没有看到使用这种自有标签的重点,因为你为每个用户创造了新的习惯,并且总是按用户过滤。 就我所知,acts_as_taggable_on的所有权function仅在您有一个由多个用户标记的资源并且您想知道谁标记了什么时才有用。 在您的情况下,每个人都有自己的可标记资源。