我正在实现标签功能,一篇文章可能有一个或多个标签。我可以以以下格式从数据库中获取标签值:
["social network", "professional"]
我希望以这种格式输出
"social network professional"
我希望将一个数组转换为字符串,但不包含
,
。以下是从数据库中提取值作为数组的代码片段。<%= article.tags.collect(&:name) %>
我该如何将这个输出转换为没有逗号的字符串呢?
我正在实现标签功能,一篇文章可能有一个或多个标签。我可以以以下格式从数据库中获取标签值:
["social network", "professional"]
我希望以这种格式输出
"social network professional"
,
。以下是从数据库中提取值作为数组的代码片段。<%= article.tags.collect(&:name) %>
你看过pluck
吗?如果你只想从数据库中获取一个记录(在你的情况下是“name”),它非常有用。你可以使用它来做到这一点:
a = article.tags.pluck(:name)
要将您的文章标题用空格分隔输出,请执行以下操作:
a.join(" ")
为了完整起见,你可以像下面的评论中所说的那样链接这些方法:
article.tags.pluck(:name).join(" ")
我得到了以下两个解决方案:
<%= article.tags.collect(&:name).join(" ")%>
<%= article.tags.pluck(:name).join(" ") %> - by yossarian.
["social network", "professional"].join(",")
"社交网络,专业"
["social network", "professional"].join(" ")
"社交网络 专业"
.join(" ")
已经在现有的答案中提到过了。 - Eric Aya
pluck
操作的是db
层级,而collect
操作的是数组。要查看这一点,请检查两种情况下的tail -f /log/development.log
。使用collect
方法,查询会返回所有字段,然后收集你想要的字段;而使用pluck
方法,则仅检索 db 参数。 - Christian-G