Coffeescript错误:'undefined'不是对象(评估'mydata.length')

时间:2013-07-19 03:23:52

标签: ruby-on-rails coffeescript

此代码在将coffee_input哈希传递给coffeescript代码的视图中正常工作

 #if coffee_input?
 if typeof coffee_input isnt "undefined"
   mydata = JSON.parse coffee_input
   for p in mydata by 1
     if $('#'+p.name).length
       .. do stuff

但在其他页面上,我一直在浏览器中收到此错误:

TypeError: 'undefined' is not an object (evaluating 'mydata.length')

虽然我正在使用typeof coffee_input isnt undefined

我不明白。

编辑: 来自View的代码:

= javascript_tag do
  window.coffee_input = '#{raw @js.to_json}';
来自控制器的

@js是:

   @js = []
   @js_hash = {"name" => p.name, "hosts" => "", "services" => ""}
   @js << @js_hash

1 个答案:

答案 0 :(得分:0)

解决方案:我查看了浏览器中生成的Javascript

(function() {
  jQuery(function() {
var context, g, metrics, mydata, overall, pod, _i, _len, _results;

if (typeof coffee_input !== "undefined" && coffee_input !== null) {
  mydata = JSON.parse(coffee_pods);
  _results = [];
  } // WRONG!!!!!!!!!!!!!!!
  for (_i = 0, _len = mydata.length; _i < _len; _i += 1) {
      …..

由于某些未知原因,它将大括号放在if的末尾而不是for循环的末尾。

我只是重写了它,间距是正确的,如果不是咖啡脚本就会抱怨。