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