【问题标题】:Javascript loads fine on index page, but not in other pagesJavascript 在索引页面上加载正常,但在其他页面上不加载
【发布时间】:2011-07-21 23:44:52
【问题描述】:

我已经在这里用头撞墙了几个小时,试图解决这个问题,但没有运气。我正在使用 Ruby、Haml、Sinatra 和 Highcharts。我创建了一个 Ruby HighCharts 对象,该对象插入一个 Haml 部分,其中仅包含 :javascript 过滤器,后跟必要的 HighChart JS。

当我在基本路由(“/”)中测试它时,这很好用。部分加载的 JQuery、Highcharts 和内联 JS 都很好,图表渲染成功。

但是当我将 IDENTICAL 代码放在另一条路线(例如“/user/:id”)和适当的视图中时,图表不会呈现。使用 Firebug,我可以看到部分加载中的 Jquery、Highcharts 和适当的 JS 正确,并且 Ruby 变量的插值与我将这段代码放在基本路由中时完全相同。所以提供给浏览器的 JS 是相同的,但是图表只有在我把它放在基本路由中时才会呈现。

可能有助于诊断的一件事:在“user/:id”页面上,当我在 Chrome 中使用 Firebug 检查外部 Jquery 和 Highchart 脚本时,它显示“拒绝访问受限 URI”。但是当我在基本页面(“/”)上检查这些脚本时,它会显示完整的 javascript 文本。在我检查 Ruby 插值的内联 Highcharts JS 时,这两个页面上都显示了全文。

也许 Jquery 和 Highcharts 外部脚本没有在“user/:id”页面上正确加载?知道可能是什么问题吗?

这是我的布局 haml 文件,以防它有助于诊断问题:

!!!  
%html  
  %head  
    %title= @title
    %link(rel="stylesheet" href="/style.sass")
    %script{:src => "javascripts/jquery-1.6.2.js"}
    %script{:src => "javascripts/js/highcharts.js"}
  %body
    #framecontent
      .innertube
        #nav  
          %ul
            %li
              %a(href="/") Home
            %li
              %a(href="senate") Users

#maincontent
  .innertube
    - if flash[:notice]
      %p.notice
        = flash[:notice]
    - if flash[:error]
      %p.error
        = flash[:error]
    =yield

【问题讨论】:

  • 清除缓存。然后使用httpfox查看是否正在加载JS文件

标签: javascript ruby sinatra haml highcharts


【解决方案1】:

为什么不在根级别使用 src:

%script{:src => "/javascripts/jquery-1.6.2.js"}
%script{:src => "/javascripts/js/highcharts.js"}

这应该适用于任何级别

【讨论】:

  • 是的!我讨厌两个小斜线占用我生命中的 2 个小时,但感谢上帝,它现在已经修好了。它现在可以很好地呈现图表。非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-09
  • 2012-12-07
  • 1970-01-01
相关资源
最近更新 更多