如何在 Rails 中使用 gem 'acts-as-taggable-on' 时获取所有标签的列表(而不是计数)

2024-01-08

我已经设置了acts-as-taggable-on我的模型中的宝石是这样的:

 acts_as_taggable_on :deshanatags

它使用上下文deshanatags。现在我需要获取此上下文中所有标签的列表(不仅仅是分配给一项的标签。我需要所有内容),格式如下:

[
    {"id":"856","name":"House"},
    {"id":"1035","name":"Desperate Housewives"}
]

我怎样才能做到这一点?

我尝试遵循许多教程,但遇到了死胡同,因为它们大多数都是为 Rails 3 编写的。Rails 对模型进行了一些更改,例如删除 attr_accessor,这使我很难理解这些教程。所以请帮忙。

只是我试图添加 Jquery 令牌输入(http://loopj.com/jquery-tokeninput/ http://loopj.com/jquery-tokeninput/)到我的应用程序

PS :通过Tagging table,有没有办法通过过滤上下文来获取像Tag.all的输出一样的标签列表?


标签存储在标签表中,您可以通过程序访问该表,例如

ActsAsTaggableOn::Tag.all

如果您需要有关标签使用的更多信息,还有表格

ActsAsTaggableOn::Tagging

其中包含每个标签使用位置的链接,包括其上下文

要进一步将其应用到您的示例中,您可以使用

ActsAsTaggableOn::Tagging.includes(:tag).where(context: 'deshanatags').map { |tagging| { 'id' => tagging.tag_id.to_s, 'name' => tagging.tag.name } }.uniq

我们来解释一下该声明中的各个部分:

  • “includes”确保不同的标签是“急切加载”的,换句话说,不是加载 n+1 条记录,而是只在数据库上执行 2 次查询
  • “where”将记录限制为具有给定上下文的记录
  • “map”将结果记录数组转换为一个新数组,其中包含您在问题中要求的哈希值,其中 id 映射到标签的 id,名称映射到标签的名称
  • 最后,“uniq”确保您的列表中没有双打

为了解决您的额外问题,即没有标签的标记,您可以将 where 子句扩展到

where("(context = 'deshanatags') AND (tag_id IS NOT NULL)")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Rails 中使用 gem 'acts-as-taggable-on' 时获取所有标签的列表(而不是计数) 的相关文章

随机推荐

  • 找到章节的最大深度

    每个人 在这种情况下 我想计算章节的最大深度 例如 一本没有章节的书的高度为 0 一本书只有章节没有章节 高度应该为1 以下是xml
  • 无法使用mysql中的数据库(未知数据库)

    我正在尝试开始使用以下 github 包 py gameday https github com wellsoliver py gameday 我安装了 mysqlbrew mysql并创建了 root 密码 gt mysqladmin u
  • 使用opencv,如何去除透明图像中的非对象?

    我是图像处理方面的新手 我正在尝试调整透明图像中绑定对象的矩形 框架的大小 但我不知道怎么做 请帮我 非常感谢 P s 它不会与作物重复 在裁剪中 您修复了一个元组 从 x y w h 裁剪 但在我的照片中 我不知道在哪里裁剪 我们需要首先
  • 跳过foreach淘汰赛js数组中的项目?

    我有一个关于淘汰赛 js 中的 foreach 和第一项的问题 我想跳过第一个并迭代下一个项目 主要问题是我想做这样的事情 div div div div div div 我不认为 knockoutJS 提供了跳过数组中特定元素的功能 但您
  • 在PYTHON中将列表打印到不带[括号]的txt文件

    我正在尝试获取姓名列表 按字母顺序排列并将它们打印到新列表中 这是我的代码 names newnames with open C names txt r as infile for row in infile readlines name
  • 为什么C中的const指针可以修改?

    今天我尝试使用const标识符 但我发现const变量仍然可以修改 这让我很困惑 以下是代码 在compare const void a const void b 函数中 我尝试修改该值a指向 include
  • TSQL 四舍五入到小数点后半位

    我想四舍五入到最接近的半个小数 地理坐标 以进行一些数据可视化 在 t sql 中 是否有一个内置函数可以四舍五入到小数点后一半 如果是这个术语 期望结果的示例 1 1 gt 1 0 1 4 gt 1 5 1 6 gt 1 5 1 9 gt
  • 第二次打开时进度条没有重置为“0”

    在 Android 应用程序中 我在单独的线程中运行任务 当线程运行时 它会更新主窗口中的进度条 让用户知道发生了什么 问题是 如果用户第二次启动线程 进度条将不会重置 它只会保持 100 状态而不执行任何操作 整个源码是可以在 githu
  • Hoxton.SR6 与 Spring Boot 2.3.0 导致奇怪的内容类型问题

    当我将 Spring Boot 2 3 0 RELEASE 应用程序从 Hoxton SR4 更新到 Hoxton SR6 唯一的更改 时 我开始面临来自各个端点的内容类型的奇怪问题 例如 对于 Hoxton SR4 任何未经授权的端点都会
  • 在两个视图之间传递数据

    我想在 watchOS 6 上创建一个安静的简单应用程序 但是在 Apple 更改了 Xcode 11 beta 5 中的 ObjectBindig 后 我的应用程序不再运行 我只是想在两个视图之间同步数据 所以我用新的 Published
  • 使用 Google Translate API 翻译时排除 HTML 标签

    目前我知道 span class e notranslate span 用于省略要在跨度之间翻译的文本 我正在寻找将带有 HTML 标签的内容发送到 Translate API 并让它返回而不翻译标签 无论如何 在翻译之前是否可以省略标签
  • Spring Social - Facebook 登录出现 404 错误

    我的应用程序中有 spring 3 1 和 spring security 登录 我正在尝试使用 Spring Social 添加 facebook 登录 它会转到 facebook 登录页面 但登录后会抛出 404 错误 我在网址中有这个
  • 如何禁用 DataTables/TableTools 按钮

    我正在使用 DataTable 1 10 和 TableTools 2 2 1 鉴于以下内容 我想禁用 启用编辑按钮 var myTable myTable DataTable tableTools aButtons sExtends te
  • “$container.imagesLoaded 不是函数”错误

    所以 我得到 container imagesLoaded is not a function error 这是位于标题中的代码 function root undefined function use strict var contain
  • 使用WELL512获取一定范围内的随机实数

    我正在使用中描述的 WELL512 伪随机数生成器函数这张纸 http www lomont org Math Papers 2008 Lomont PRNG 2008 pdf 该函数返回一个随机数unsigned long value 如
  • Rails 迁移:消除约束

    我在 Rails 应用程序中有一个表 在 schema rb 中 如下所示 create table users force gt true do t t string name null gt false t string address
  • 如何在ffmpeg中连接具有不同属性的视频?

    我正在尝试合并一些视频 但出现时间戳错误 我试图使它们具有相同的尺寸 帧速率 采样率 并且在没有音轨时添加音轨 ffmpeg i input1 mp4 y i audio1 mp3 c v copy c a aac shortest out
  • 用户玩快游戏时如何确定谁是第一个玩家?

    我正在使用以下代码onRoomConnected int statusCode Room room 用于决定谁是第一名玩家 但有时我会为两名球员获得相同的第一 第二 如何解决此错误 if quickGame myTurn room getP
  • 使用 jquery 设置所有 css3 背景图像

    嗨我想设置background image对于所有带有 jquery 的浏览器 background image linear gradient green blue Norme W3C background image moz linea
  • 如何在 Rails 中使用 gem 'acts-as-taggable-on' 时获取所有标签的列表(而不是计数)

    我已经设置了acts as taggable on我的模型中的宝石是这样的 acts as taggable on deshanatags 它使用上下文deshanatags 现在我需要获取此上下文中所有标签的列表 不仅仅是分配给一项的标签