我正在尝试使用以下内容收集来自一群人的电子邮件:
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
事实上,最好还用分号替换逗号。
答案 0 :(得分:5)
def representative_email(group)
group.representatives.collect{ |m|
rep.User.find(m.user_id)
rep.email
}.join('; ')
end
您的功能结果(即Array#collect
的结果)是Array
;括号和引号是通过Array
转换为String
的方式引入的工件。如果你控制转换过程,它通常会变得更好 - 因为你确切知道你收到了什么。
在这种情况下,您可以使用Array#join
将Array
的字符串表示结合在一起,使用参数String
作为粘合剂。
答案 1 :(得分:2)
可能您看到p
或inspect
。双引号不是字符串的一部分。它们只是代表弦乐文学的方式。括号和逗号表示它们在数组中。当您通过p
或inspect
看到它们时,它们就在那里。如果您想了解它们的实际效果,请使用puts
。
答案 2 :(得分:1)
您所看到的是您创建的阵列的“字符串化”版本。如果你想以不同的方式格式化,你应该在调用它时做这样的事情:
emails = representative_email(group).join(';')
在尽可能使用find
时也应该非常小心,如果无法找到您要查找的内容,则会抛出ActiveRecord :: RecordNotFound异常,因此您必须准备好拯救它。我不确定你在这里打算做什么,User.find
似乎不合适。