Rails 5,javascript未在生产中加载

时间:2017-07-03 21:10:56

标签: javascript ruby-on-rails twitter-bootstrap heroku

在我的应用程序中,我使用了bootstrap主题(gentelella),在我的一个页面中,我有一个Moris图表,它在开发经验中非常有效,但在生产中(heroku)不起作用。

控制台中的错误如下: **未捕获的ReferenceError:未定义Morris **

看起来像Moris图的js(脚本包含在gentelella中)没有加载,但其他一切正常。

我的图表代码:

   <div id="graph_line"></div>
   <script type="text/javascript">
   new Morris.Line({
      element: 'graph_line',
      data: [
      {Date: 'mydate1', y: myvalue1},
      {Date: 'mydate2', y: myvalue2},
      {Date: 'mydate3', y: myvalue3}
      ],
      xkey: 'Date',
      ykeys: ['y'],
      labels: ['Y'],
      hideHover: 'auto',
      lineColors: ['#26B99A', '#34495E', '#ACADAC', '#3498DB'],
      resize: true
    });
   </script>

我不包含任何Moris.js,因为它已包含在我的主题中。

我不明白为什么它在本地工作而不是在生产中工作正常。

经过一番研究,我在我的production.rb中添加了这一行:

 config.assets.debug = true

在heroku日志中我有错误:

资产管道中不存在资产“application.css” 并且应用程序没有运行,但它没有上面的行。

知道为什么我的图表不能在生产中工作以及为什么heroku看不到我的application.css

我的资产中有

P.S 我有application.scss而不是application.css会导致问题吗?但我需要该文件为.scss

我的application.js:

   //= require jquery
   //= require jquery.turbolinks
   //= require jquery_ujs
   //= require jquery.remotipart
   //= require pnotify
   //= require unobtrusive_flash
   //= require flashes
   //= require gentelella
   //= require gentelella-custom
   //= require_tree .

morris脚本在gentellela-custom.js中初始化( init_morris_charts();

我的application.html.erb

  <%= csrf_meta_tags %>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

1 个答案:

答案 0 :(得分:0)

更新您的代码以获得调试器参考: 在<%= debugger; %>行之前的new Morris.Line({,然后打开您喜欢的浏览器,切换到调试器窗口,您将在那里有一个断点。 这将有助于您了解Morris是否在那个时间点装载。