Javascript在索引页面上加载正常,但在其他页面中没有

时间:2011-07-21 23:44:52

标签: javascript ruby sinatra haml highcharts

我一直在这里撞墙挡了几个小时试图解决这个问题而没有运气。我正在使用Ruby,Haml,Sinatra和Highcharts。我创建了一个Ruby HighCharts对象,它插入一个Haml partial,只包含: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的两个页面上,它显示了全文。

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

这是我的布局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

1 个答案:

答案 0 :(得分:2)

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

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

这应该适用于任何级别