从另一个符号数组填充新数组

时间:2011-03-06 21:31:39

标签: ruby arrays ruby-on-rails-3 symbols prawn

我有一个关于Ruby数组的问题,但它有点难以描述,所以我从阅读其他问题中找不到多少。这里是。

目前我有以下代码可以使用(Prawn表的一部分)

代码段A:

  students = all_students.map do |student|          
      [
      student[:first_name],
      student[:last_name],
      student[:email],
      student[:given_name]
      ]
  end
  pdf.table students

这很好,但现在我想省略一些列(例如,不显示last_name)。 假设我得到一系列列名,让我们说pickColumns:

摘录B:

  pickedColumns = []
  pickedColumns << :first_name << :email << :given_name  #NOTE: no (:last_name) there!

  students = all_students.map do |student|
      studentCols = pickedColumns.each do |studentCol|
        student[studentCol]
      end
  end
  p.table students

我无法使用代码段B中的替换代码实现代码段A的效果。我在代码段B中获得的内容不是“student [:first_name]”的实际值,只是字符串“first_name” “对于每一行。

如果我的描述不是100%明确,请告诉我。

谢谢你的帮助!

此致

1 个答案:

答案 0 :(得分:3)

students = all_students.map do |student|
  studentCols = pickedColumns.each do |studentCol|
    student[studentCol]
  end
end

制作

students = all_students.map do |student|
  pickedColumns.map do |studentCol|
    student[studentCol]
  end
end

它会起作用。

PS:要遵守ruby的命名约定,您应该更改变量名称以使用所有小写和下划线,而不是使用camelCase。