如何在Ruby on Rails应用程序中将数组输出转换为普通字符串

4

我正在实现标签功能,一篇文章可能有一个或多个标签。我可以以以下格式从数据库中获取标签值:

["social network", "professional"]

我希望以这种格式输出

"social network professional"

我希望将一个数组转换为字符串,但不包含,。以下是从数据库中提取值作为数组的代码片段。
<%= article.tags.collect(&:name) %>

我该如何将这个输出转换为没有逗号的字符串呢?
3个回答

12

你看过pluck吗?如果你只想从数据库中获取一个记录(在你的情况下是“name”),它非常有用。你可以使用它来做到这一点:

a = article.tags.pluck(:name)

要将您的文章标题用空格分隔输出,请执行以下操作:

a.join(" ")

为了完整起见,你可以像下面的评论中所说的那样链接这些方法:

article.tags.pluck(:name).join(" ")

是的,我知道,不同之处在于它们操作的层级不同。pluck 操作的是 db 层级,而 collect 操作的是数组。要查看这一点,请检查两种情况下的 tail -f /log/development.log。使用 collect 方法,查询会返回所有字段,然后收集你想要的字段;而使用 pluck 方法,则仅检索 db 参数。 - Christian-G

0

我得到了以下两个解决方案:

<%= article.tags.collect(&:name).join(" ")%>
<%= article.tags.pluck(:name).join(" ") %> - by yossarian.

-1

["social network", "professional"].join(",")

"社交网络,专业"

或者如果你不想要逗号

["social network", "professional"].join(" ")

"社交网络 专业"


1
.join(" ")已经在现有的答案中提到过了。 - Eric Aya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接