【问题标题】:How to fix duplicate taggings?如何修复重复的标签?
【发布时间】:2015-10-17 01:52:38
【问题描述】:

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

当用户点击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 中:&lt;%= render @habits %&gt;routes.rb 中:root 'pages#home'

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

【问题讨论】:

    标签: ruby-on-rails ruby tags


    【解决方案1】:

    您是否尝试过取消注释第 行:

    self.tag_list = nil
    

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

    清除列表,这样我们就不会得到重复的标记

    我翻遍了sources,找到了你调用的方法:

    def set_owner_tag_list_on(owner, context, new_list)
    

    因此,由于最后一个参数称为 new_list,我猜您提交给 set_owner_tag_list_on 方法的旧列表将再次设置相同的标签。因此,没有所有者的旧tag_list 在那里设置为零,因为tag_list 似乎只包含没有所有者的标签(根据docs

    虽然我真的不明白使用这个自有标签的意义,因为你为每个用户创造了新的习惯,并且总是按用户过滤。据我所知,acts_as_taggable_on 的所有权功能仅在您拥有一个由多个用户标记的资源并且您想知道谁标记了什么时才有用。在您的情况下,每个人都有自己的可标记资源。

    【讨论】:

      猜你喜欢
      • 2015-04-05
      • 2021-08-13
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多