如何将js和coffee脚本文件添加到特定页面的末尾

时间:2014-03-03 18:50:04

标签: javascript ruby-on-rails ruby coffeescript morris.js

我正在使用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之前的页面开头加载了咖啡脚本?

请帮忙

1 个答案:

答案 0 :(得分:1)

我的猜测是employee.js包含在application.js中,因此在你建议之前,在morris.js之前加载。最简单的解决方案是从application.js中删除employee.js,并将其仅包含在使用它的页面中。或者,将代码包装在employee.js中,以便只有在您知道已加载morris.js时才会使用Morris。