Rails 在部分内用逗号分隔数组项

2024-05-04

Rails 中在部分内部创建逗号分隔列表的最优雅的方法是什么?

我最近发现您可以使用部分来迭代从另一个视图模板发送的集合。所以在视图模板中我有:

<% render @dvd.director %> 

然后在/view/directors/_director.html.erb中:

<%= director.director %>

这实际上做了类似的事情:

@dvd.director.each { |d| puts d.director }

现在,我知道我可以像这样使用 .join :

<% @dvd.director.map { |t| t.director }.join(", ") %>

但是,由于部分已经迭代了数组中的每个条目,因此如何正确分隔列表并且不让最后一个(或单个)在末尾带有丑陋的逗号?

很多作品只有一位导演,我只是想将那些有不止一位导演的作品正确分开。我知道我可以手动完成所有这些工作(使用普通的非迭代部分并自己创建 .each 循环),但我正在尝试以 Rails 方式完成并学习。

Thanks.

Edit

为了更好地解释一下,@dvd.director 返回一个 ActiveRelation 对象,如下所示:

[#<Director id: 13, director: "Andrew Stanton">, #<Director id: 14, director: "Lee Unkrich">]

所以我不能只是这样做@dvd.director.join(', ')

除了获取数据之外还有其他方法吗

@dvd.director.each { |dir| dir.director }

因为我也有同样的问题,所以我必须对它们进行计数,或者确保它不是最后一项,然后再在它们之间添加逗号,或者仅提取导演姓名并将它们放入字符串或类似的内容中。如果我能加入那就太好了。


Ruby's join如果数组中只有一个元素,该方法不会添加分隔符。

您应该能够对任何大小的列表执行以下操作:

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

Rails 在部分内用逗号分隔数组项 的相关文章

随机推荐

  • 零填充缓冲区/文件的 CRC32 计算

    如果我想计算大量连续零字节的 CRC32 值 在给定零运行长度的情况下 是否可以使用恒定时间公式 例如 如果我知道我有 1000 个字节全部用零填充 有没有办法避免 1000 次迭代的循环 只是一个例子 对于这个问题 实际的零数量是无限的
  • 我们可以从视图调用控制器的方法(理想情况下我们从助手调用)吗?

    在 Rails MVC 中 您可以从视图调用控制器的方法 因为方法可以从助手调用 如果是 怎么办 答案如下 class MyController lt ApplicationController def my method Lots of
  • 许可证密钥模式检测? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这不是真实情况 请忽略您可能认为适用的法律问题 因为它们并不适用 假设我有一组 200 个已知的有效许可证密钥 用于假设的软件许可算法
  • PyGTK+3(PyGObject)创建屏幕截图?

    我过去 3 天在 google 上搜索 如何使用 PyGTK 3 创建屏幕截图 有关于 pyqt pygtk 2 wx 和 PIL 的 gallizion 教程 顺便说一句 我不需要 scrot imlib2 imagemagick 等外部
  • 使 C# 源代码作为脚本运行?

    我正在编写一些脚本 我发现有时更多的功能会更好 就像持续尝试以 1 秒延迟删除文件并使其可移植的能力一样 我今天花了一些时间将 bat 脚本翻译为 bash 我知道我可以使用 php 或 python 但我非常喜欢静态 编译时间检查 有没有
  • 有可能吗?:行为 t [行为 t a] -> 行为 t [a]

    有没有办法有一个Behavior t a 其中 a 在时间 t 的值是 a 中包含的值Behavior t Behavior t a 在时间 t 即 具有以下类型的函数 Behavior t Behavior t a gt Behavior
  • 两种 SQL 连接符号有什么区别?

    SQL 1 select from t1 join t2 on t1 f1 t2 f2 SQL 2 select from t1 t2 where t1 f1 t2 f2 他们返回的结果是相同的 它们之间有什么区别吗 例如 DBMS 如何运
  • 在 C# WPF 或 Windows 窗体应用程序中使用 DirectX c++ DLL

    我用c 编写了一个DX11渲染器 我现在正在寻找一种方法来实现它的编辑器 GUI 由于我非常习惯 Windows 窗体和 WPF C 应用程序 因此我正在考虑将渲染器放入 dll 中 从 C 应用程序加载 dll 并使用它绘制到表单的定义部
  • gnuplot:如何获得正确的数量级?

    这个问题 问题可能与这个话题 https stackoverflow com questions 55130265 inconsistency with gnuplot format specifiers t and t 如果您输入 pri
  • 从 XML 资源创建 hashmap/map

    我正在制作一个应用程序 其中 Web 服务从 Web 服务 即 BEL FRA SWE 获取 除其他外 一堆代码 在运行时 我想将这些代码翻译成适当的名称以显示给用户 即比利时 法国 瑞典 可能有很多这样的代码 所以我想知道是否有任何适当的
  • 有没有办法设置独立 TableView 列的样式?

    我可以使用 CSS 来设置单元格样式 但如果我只想为一列使用不同的样式 例如使用不同的文本颜色 怎么办 也许我错过了一些东西 你应该使用TableColumn setCellFactory http docs oracle com java
  • 如何以编程方式更新 SharePoint Web 部件中的内容?

    有人知道如何以编程方式更新任何标准 SharePoint v3 Web 部件的内容吗 例如 将链接摘要 Web 部件放置在页面上 添加一些链接 现在 我如何使用 WSS API 更新此信息 我还没有找到任何直接的方法来执行此操作 到目前为止
  • 后续交易不会更新 Hyperledger Fabric 中的账本,产生图标一致状态

    我正在做一个小项目来让自己熟悉超级账本结构 https hyperledger fabric readthedocs io en release 1 1 目前 我有一个小型网络 由单个对等点 排序者和 ca 节点 加上 cli chainc
  • 将数据导入 MySQL Workbench

    我有一个包含 6 个表的数据库 我想将这些表导入到existingMySQL Workbench 中的数据库 我使用 phpMyAdmin 将数据库导出到 sql文件 并使用 数据导入 恢复 按钮将其导入到 MySQL Workbench
  • EF 型号。导航属性只能参与单个关系

    我有这样的实体 它们紧密相连 public class Game public int Id get set public int FirstTeamId get set public Team FirstTeam get set publ
  • 增加 .fig 文件中的散点标记大小

    我有一个图形文件 scatter fig 该图有许多使用 scatter 的散点绘图仪 现在我只有这个无花果文件 我需要增加所有散点的标记大小 手动尝试过 但非常困难 有没有办法我可以做类似的事情 H 图形句柄 s 点 h 设置 s 标记大
  • 为什么 -INT_MIN = INT_MIN 在有符号的二进制补码表示中?

    我仍然没有找到为什么最低的有符号负数没有等效的有符号正数的原因 为简单起见 我的意思是 3 位二进制数 100 是 4 但我们不能有符号格式的正 4 因为我们不能 它溢出了 那么我们如何知道补码 1000 是 4 1000 0000 是 1
  • eval 列表理解失败[重复]

    这个问题在这里已经有答案了 考虑以下假设代码 class B object def init self self b 2 def foo self out1 eval self b ok print out1 prints 2 out2 e
  • 使用 MySQL Workbench 创建新数据库

    作为 MySQL 新手 我安装了最新版本的 MySQL Workbench 5 2 33 我想知道如何使用此应用程序创建数据库 在 SQL 编辑器的 概述 选项卡中 几乎没有显示 MySQL 架构 这些架构是现有数据库吗 启动 MySQL
  • Rails 在部分内用逗号分隔数组项

    Rails 中在部分内部创建逗号分隔列表的最优雅的方法是什么 我最近发现您可以使用部分来迭代从另一个视图模板发送的集合 所以在视图模板中我有 然后在 view directors director html erb中 这实际上做了类似的事情