0

我正在使用仪表板来显示一些数据。我其中一项工作的部分代码使用了地图!红宝石中的功能:

vars = arr.map! { |element| element.gsub(/.{3}$/, '' )}

当我尝试使用 dashing start 运行仪表板时,出现以下错误:

scheduler caught exception:
undefined method map! for #<Hash: 0x......>

如果我将代码作为 ruby​​ 程序单独运行,我会得到正确的结果。

4

1 回答 1

0

JSON 模块的文档表明该parse方法将“...将您的字符串转换为哈希”。请参阅http://www.ruby-doc.org/stdlib-2.0.0/libdoc/json/rdoc/JSON.html#module-JSON-label-Parsing+JSON

尝试只调用map你的哈希而不是调用map!

vars = arr.map { |element| element.gsub(/.{3}$/, '' )}

不同之处在于map它将返回一个新数组,其中包含为哈希中的每个元素运行一次块的结果。另外,map在 Enumerable 模块中定义,它包含在 Hash 中,但未map!在 Enumerable 中定义。请参阅http://www.ruby-doc.org/core-2.0.0/Enumerable.html#method-i-map

于 2014-10-02T14:09:27.950 回答