阵列到单个部分

时间:2011-05-09 18:31:39

标签: 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

事实上,最好还用分号替换逗号。

3 个答案:

答案 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#joinArray的字符串表示结合在一起,使用参数String作为粘合剂。

答案 1 :(得分:2)

可能您看到pinspect。双引号不是字符串的一部分。它们只是代表弦乐文学的方式。括号和逗号表示它们在数组中。当您通过pinspect看到它们时,它们就在那里。如果您想了解它们的实际效果,请使用puts

答案 2 :(得分:1)

您所看到的是您创建的阵列的“字符串化”版本。如果你想以不同的方式格式化,你应该在调用它时做这样的事情:

emails = representative_email(group).join(';')

在尽可能使用find时也应该非常小心,如果无法找到您要查找的内容,则会抛出ActiveRecord :: RecordNotFound异常,因此您必须准备好拯救它。我不确定你在这里打算做什么,User.find似乎不合适。