我正在使用仪表板显示一些数据。我的其中一个作业的部分代码使用了地图!功能于红宝石:
vars = arr.map! { |element| element.gsub(/.{3}$/, '' )}
当我尝试使用破折启动运行仪表板时,我收到以下错误:
scheduler caught exception:
undefined method map! for #<Hash: 0x......>
如果我自己运行代码作为ruby程序,我会得到正确的结果。
答案 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。