4

如果这已在其他地方发布,我深表歉意,但我不完全确定如何搜索这个问题。

基本上,我已经fullcalendar.js坐在了app/assets/javascripts/。在我application.js的文件中(当然在同一个文件夹中)我有以下内容......

//= require jquery
//= require jquery_ujs
//= require foundation
//= require_tree .

因此,正如预期的那样,fullcalender.js在资产编译过程中被清扫并最终application.js提供给用户。

当我尝试引用在中定义的函数fullcalendar.js(并因此在application.js编译资产后定义)时,问题就出现了,它会在 firebug 的 js 控制台中抛出一个错误声明TypeError: $(...).fullCalendar is not a function,当然完整的日历不会呈现。

然而,现在,如果我<%= javascript_include_tag "fullcalendar.js" %>在所有其他脚本和样式表都被拉入之后包含在布局文件中,它就会按预期工作。

困惑,我查看了每个文件中的 js 并比较了它们,看不出有什么区别。资产管道是否发生了我不知道的事情,或者这是一些奇怪的 DOM 问题?我只是在这一点上不知道。

作为参考,这里是网站页面源中链接的application.js和的内容。fullcalendar.js我只包含了每个相关的完整日历部分,因为如果我包含所有内容,它对于 gist 或 pastebin 来说太大了。

让我感到困惑的是,两个来源都来自同一个文件,一个只是直接链接,另一个流经资产管道流程。

application.js- http://pastebin.com/byyNErB8

fullcalendar.js- http://pastebin.com/k4p29YmP

任何见解或帮助将不胜感激。

4

1 回答 1

3

Maybe a dependency error. I'll suggest you to use a better practice for such lib.

  1. Put the fullcalendar scripts into vendor/assets/javascripts

  2. Require this script manually in application.js before the tree and after jquery and any other lib it depends.

    /=require 'fullcalendar`
    

Add

Check the loaded Javascript files in header, if application.js is the last, you have dependency error. The lib must be there before calling it.

于 2013-04-11T03:38:49.380 回答