我正在使用morris.js来显示图表。相关的js文件位于vendor/assets/javascripts
我将它们包含在application.js
中//= require raphael
//= require morris
当我在包含morris图元素的页面上时,图形会正确呈现。
问题是所有其他使用javascript的页面都不再起作用(没有morris图元素)。
我收到此错误:
Error: Graph container element not found
throw new Error("Graph container element not found");
那么我如何在特定页面的末尾包含js文件?
我试图在特定页面的末尾包含以下内容:
<%= javascript_include_tag "raphael.js" %>
<%= javascript_include_tag "morris.js" %>
但是因为图表需要一些位于employee.js.coffee中的咖啡脚本:
jQuery ->
Morris.Line
element: 'averages_chart'
data: $('#averages_chart').data('averages')
xkey: 'month'
ykeys: ['average']
labels: ['Average']
我收到以下错误:
ReferenceError: Morris is not defined
return Morris.Line({
我认为这种情况正在发生,因为它在javascript_include_tag
之前的页面开头加载了咖啡脚本?
请帮忙
答案 0 :(得分:1)
我的猜测是employee.js包含在application.js中,因此在你建议之前,在morris.js之前加载。最简单的解决方案是从application.js中删除employee.js,并将其仅包含在使用它的页面中。或者,将代码包装在employee.js中,以便只有在您知道已加载morris.js时才会使用Morris。