我正在尝试使用以下方法收集来自一群人的电子邮件:
def representative_email(group)
group.representatives.collect{ |m|
rep.User.find(m.user_id)
rep.email
}
end
但是,这会产生以下结果:["email@email.com", "email2@email.com"]
如何删除所有[]
和""
并仅保留:
email@email.com, email2@email.com
实际上,最好也用分号替换逗号。
def representative_email(group)
group.representatives.collect{ |m|
rep.User.find(m.user_id)
rep.email
}.join('; ')
end
函数的结果(即Array#collect
的结果)是一个Array
;括号和引号是由Array
转换为String
的方式引入的工件。如果您控制转换过程,通常会更好 - 因为您确切地知道您收到的内容。
在这种情况下,您可以使用将Array
的字符串表示形式粘在一起的Array#join
,将参数String
用作胶水。
也许,你看到了,虽然p
或inspect
.双引号不是字符串的一部分。它们只是表示字符串文学的方式。括号和逗号表示它们在数组中。当您通过p
或inspect
看到它们时,它们就在那里.如果您想查看它们的实际外观,请使用 puts
.
您看到的是您所创建的数组的"字符串化"版本。如果您希望它以不同的方式格式化,则应在调用它时执行以下操作:
emails = representative_email(group).join(';')
使用find
时也应该非常小心,因为它可以,如果找不到您要查找的内容,则会抛出 ActiveRecord::RecordNotFound 异常,因此您必须准备好挽救此问题。我也不确定你在这里想做什么,User.find
的电话似乎不合适。