我一直在这里撞墙挡了几个小时试图解决这个问题而没有运气。我正在使用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
答案 0 :(得分:2)
为什么不在根级别使用src:
%script{:src => "/javascripts/jquery-1.6.2.js"}
%script{:src => "/javascripts/js/highcharts.js"}
这应该适用于任何级别