如何修复重复的标签?
How to fix duplicate taggings?
用户可以提交习惯、目标、价值观和统计数据的标签。
当用户单击 tag_cloud
中的标签时,他将被重定向到包含该标签所有实例的主页,但由于某种原因,属于习惯的实例正在重复。
关于这是为什么的任何想法?
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中:<%= render @habits %>
在routes.rb中: root 'pages#home'
.
我尝试只post相关内容,但这里是 gist。
您是否尝试取消注释第行:
self.tag_list = nil
我猜你是从 this source 或链接的 Whosebug 问题中复制过来的?
在您的代码注释中,您询问了以下注释行的内容:
Clear the list so we don't get duplicate taggings
我仔细研究了 sources 并找到了您正在调用的方法:
def set_owner_tag_list_on(owner, context, new_list)
因此,由于最后一个参数被称为 new_list,我猜您提交给 set_owner_tag_list_on
方法的旧列表将再次设置相同的标签。因此,没有所有者的旧 tag_list
在那里设置为 nil,因为 tag_list
似乎只包含没有所有者的标签(根据 docs)
虽然我真的不明白使用这个拥有的标签有什么意义,因为你为每个用户创造了新的习惯并且总是按用户过滤。据我所知,acts_as_taggable_on 的所有权功能仅在您拥有一个由多个用户标记的资源并且您想知道谁标记了什么时才有用。在你的情况下,每个人都有自己的可标记资源。
用户可以提交习惯、目标、价值观和统计数据的标签。
当用户单击 tag_cloud
中的标签时,他将被重定向到包含该标签所有实例的主页,但由于某种原因,属于习惯的实例正在重复。
关于这是为什么的任何想法?
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中:<%= render @habits %>
在routes.rb中: root 'pages#home'
.
我尝试只post相关内容,但这里是 gist。
您是否尝试取消注释第行:
self.tag_list = nil
我猜你是从 this source 或链接的 Whosebug 问题中复制过来的? 在您的代码注释中,您询问了以下注释行的内容:
Clear the list so we don't get duplicate taggings
我仔细研究了 sources 并找到了您正在调用的方法:
def set_owner_tag_list_on(owner, context, new_list)
因此,由于最后一个参数被称为 new_list,我猜您提交给 set_owner_tag_list_on
方法的旧列表将再次设置相同的标签。因此,没有所有者的旧 tag_list
在那里设置为 nil,因为 tag_list
似乎只包含没有所有者的标签(根据 docs)
虽然我真的不明白使用这个拥有的标签有什么意义,因为你为每个用户创造了新的习惯并且总是按用户过滤。据我所知,acts_as_taggable_on 的所有权功能仅在您拥有一个由多个用户标记的资源并且您想知道谁标记了什么时才有用。在你的情况下,每个人都有自己的可标记资源。