标记"元数据#34;在ruby中的数组

时间:2014-09-01 15:28:23

标签: ruby-on-rails ruby

我有一些代码可以组装二维数组,并将其发送到Spreadsheet gem的excel-building方法。我想用{:color => "red"}等格式代码“标记”一些子数组(对应于行)。

任何人都可以看到这样做的方法吗?我可以通过将具有格式化选项的单独对象和(例如)索引存储到我想要应用该格式的所有行来实现类似的结果。但是,如果我可以在构建数据时直接将其直接放在行本身上,那就更好了。

我遇到的一件事是使用某种命名空间哈希作为数组中的最后一个条目,如果我想格式化它,然后在电子表格构建器中再次删除它。但是,这似乎有风险,因为它在阵列的实际数据中。是否有任何类型的实例变量或我可以使用数组来“推”我的元数据?

我正在为这个应用程序使用Rails 2.2,以防相关。

1 个答案:

答案 0 :(得分:1)

由于每一行都包含数据和可能的某些元数据,因此将所有行表示为哈希数组似乎很自然,其中每个哈希包含:data键和:metadata键。后者可以省略,或者如果您没有任何行的元数据,可以指向空Hash,无论您喜欢哪个。

我没有使用Spreadsheet gem的经验,但我认为它需要一个数组数组作为输入,您可以从Hashes数组中直接创建,如下面的代码所示。

rows = [
  {
    data: [2, 3, 5],

    metadata: { color: 'red' }
  },
  {
    data: [7, 11, 13],

    metadata: {}
  }
]

# Transform into Array of Arrays, removing all metadata
rows.map { |row| row[:data] }
# => [[2, 3, 5], [7, 11, 13]]