【发布时间】: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