划线作业未定义的地图方法错误

时间:2014-10-01 19:32:51

标签: ruby map dashing

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

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

当我尝试使用破折启动运行仪表板时,我收到以下错误:

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

如果我自己运行代码作为ruby程序,我会得到正确的结果。

1 个答案:

答案 0 :(得分: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