Ruby 阵列到单个片段
我试图通过以下方式收集一群人的电子邮件:Ruby 阵列到单个片段,ruby,arrays,ruby-on-rails-3,Ruby,Arrays,Ruby On Rails 3,我试图通过以下方式收集一群人的电子邮件: 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
}
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
函数的结果(即数组#collect
的结果)是一个数组
;括号和引号是通过将数组
转换为字符串
的方式引入的工件。如果你控制转换过程,它通常会更好——因为你确切地知道你收到了什么
在本例中,您可以使用
Array#join
将Array
的字符串表示形式粘在一起,使用参数string
作为粘合剂。您可能已经看到,尽管p
或inspect
。双引号不是字符串的一部分。它们只是代表文学弦的方式。括号和逗号表示它们在一个数组中。当您通过p
或inspect
查看它们时,它们就在那里。如果您想查看它们的实际外观,请使用put
您看到的是您创建的阵列的“字符串化”版本。如果希望以不同的方式格式化,则在调用时应执行以下操作:
emails = representative_email(group).join(';')
在尽可能使用find
时,您也应该非常小心,如果无法找到您要查找的内容,它将抛出ActiveRecord::RecordNotFound异常,因此您必须准备好挽救它。我不知道你在这里调用用户想做什么。也不知道你是否发现似乎不合适