0

当我评论以下代码时

   <script type="text/javascript">

     // var data1= "<%=[@properties.map {|c| {time:c.time.strftime("%H").to_i , speed:c.speed}}].to_json%>"


    //var data=JSON.parse(data1.replace(/&quot;/g,'"'));

    //alert("dataset-------------------"+data);
</script>

显示以下错误。为什么在我评论代码后会发生此错误。同时删除以下错误后的评论也会发生。

 ActionView::Template::Error (undefined method `map' for nil:NilClass):
        48: <div id="bar-demo" align="center">
        49: <script type="text/javascript">
        50: 
        51:  // var data1= "<%=[@properties.map {|c| {time:c.time.strftime("%H").to_i , speed:c.speed}}].to_json%>"
        52: 
        53: 
        54: //var data=JSON.parse(data1.replace(/&quot;/g,'"'));
      app/views/static_pages/show.html.erb:51:in `_app_views_static_pages_show_html_erb__413296487_31443192

'

4

1 回答 1

1

ActionView尝试评估嵌入式 Ruby时发生错误。在此阶段可能发生的任何错误之外的任何内容<%= ... %><% ... %>与此无关的任何内容。特别是//与任何事情无关。ActionView只有当嵌入的 Ruby 被成功评估,生成的 HTML 文档被控制器发送到客户端的浏览器,然后 HTML 被渲染/JavaScript 被浏览器执行时,这些评论才会生效——只有这样评论才会生效有效果,即跳过设置data1变量。

您的问题是,在呈现模板时,实例变量@propertiesnil. 你有类似的东西StaticPagesControllershow?在那个动作中,你在哪里设置@properties

于 2013-03-22T04:22:39.173 回答