几个小时以来,我一直在用头撞墙,试图解决这个问题,但没有成功。我正在使用 Ruby、Haml、Sinatra 和 Highcharts。我创建了一个 Ruby HighCharts 对象,该对象插入仅包含 :javascript 过滤器的 Haml 部分,后跟必要的 HighChart JS。
当我在基本路由(“/”)中测试它时,效果很好。部分加载的 JQuery、Highcharts 和内联 JS 都很好,并且图表渲染成功。
但是当我将相同的代码放入另一个路径(例如“/user/:id”)和适当的 View 中时,图表不会呈现。使用 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
最佳答案
为什么不在根级别使用 src:
%script{:src => "/javascripts/jquery-1.6.2.js"}
%script{:src => "/javascripts/js/highcharts.js"}
这应该适用于任何级别
关于Javascript 在索引页面上加载良好,但在其他页面上则不然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784185/