javascript函数可通过javascript_include_tag获得,但不是资产管道和application.js
我很抱歉,如果这已经张贴在其他地方,但我不确定如何甚至短语搜索这个问题。
基本上,我在app/assets/javascripts/
有fullcalendar.js
。 在我的application.js
文件中(当然在同一个文件夹中)我有以下内容……
//= require jquery //= require jquery_ujs //= require foundation //= require_tree .
因此,正如预期的那样, fullcalender.js
会在资产编译过程中被fullcalender.js
,最终会在application.js
中被提供给用户。
当我尝试引用fullcalendar.js
定义的函数(因此在编译资产后在application.js
定义)时会出现问题,它会抛出一个错误,说明TypeError: $(...).fullCalendar is not a function
萤火虫的控制台,当然完整的日历不会呈现。
但是,现在,如果在拉入所有其他脚本和样式表之后在布局文件中包含 ,它将按预期工作。
令人困惑的是,我查看了每个文件中的js并对它们进行了比较,看不出有什么区别。 资产管道是否有一些我不知道的事情,或者这是一个怪异的DOM问题? 我现在还不知道。
作为参考,以下是在站点的页面源中链接的application.js
和fullcalendar.js
的内容。 我只包括每个的相关完整日历部分,因为如果我包含所有内容,它对于gist或pastebin来说太大了。
令我感到困惑的是,两个来源都来自同一个文件,一个直接链接到另一个文件,另一个来自资产管道流程。
application.js
– http://pastebin.com/byyNErB8
fullcalendar.js
– http://pastebin.com/k4p29YmP
任何见解或帮助都将非常感激。
也许是一个依赖错误。 我建议你对这种lib使用更好的练习。
-
将fullcalendar脚本放入
vendor/assets/javascripts
-
在树之前和jquery之后以及它依赖的任何其他lib之后,在application.js中手动需要此脚本。
/=require 'fullcalendar`
加
检查标头中加载的Javascript文件,如果application.js是最后一个,则表示存在依赖性错误。 在调用它之前,lib必须在那里。