2017-07-03 77 views
0

在我的应用程序中,我使用bootstrap主题(gentelella),并且在我的一个页面中我有一个Moris图,它在开发evnroment中非常完美,但是在生产中(heroku)不工作。Rails 5,JavaScript没有在生产中加载

在控制台中的错误是: **未捕获的ReferenceError:莫里斯没有定义 **

它看起来像的js为Moris的图表(该脚本被包括在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 . 

莫里斯脚本在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' %> 
+0

你需要显示更多的源代码。当我们需要查看包含/导入Morris,您的视图/部分,application.js等等时,您只显示实际调用Morris的位置。 –

+0

好的,我会更新我的问题。 –

+0

在正在加载的资产内搜索“Morris”。这将帮助您调试。 – bitsapien

回答

0

更新你的代码有一个调试器参考: <%= debugger; %>之前的行:new Morris.Line({,然后打开你最喜欢的浏览器,切换到调试器窗口,你将有一个中断点。 这将帮助您查看Morris是否在该时间点加载。

相关问题