Javascript 在索引页面上加载良好,但在其他页面上则不然

标签 javascript ruby sinatra haml highcharts

几个小时以来,我一直在用头撞墙,试图解决这个问题,但没有成功。我正在使用 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/

相关文章:

ruby-on-rails - Netbeans 可以用作 Sinatra 的 IDE 吗?

git - 无法在 git bash 终端中运行“gem install bundle”

ruby - Mongoid 3 中 Rails 模型的强一致性

ruby - 使用 Ruby 的 Redis 客户端

javascript - 切换禁用的单选按钮并更改选中的值

javascript - vue js 中的对象 HTMLTextAreaElement

ruby - rake 使用的 Gem 路径与 OS X 上的系统路径不同

logging - Sinatra with Puma 在终端中提供两倍的输出

javascript - 在具有值的表单中使用图像作为选项

javascript - 当没有记录与 Angular 过滤器匹配时显示自定义消息