通过javascript_提供的javascript函数包括_标记,但不包括asset pipeline和application.js

通过javascript_提供的javascript函数包括_标记,但不包括asset pipeline和application.js,javascript,ruby-on-rails,fullcalendar,asset-pipeline,Javascript,Ruby On Rails,Fullcalendar,Asset Pipeline,我很抱歉,如果这已经被张贴在其他地方,但我不确定如何甚至短语搜索这个问题 基本上,我的fullcalendar.js位于app/assets/javascripts/中。在我的application.js文件中(当然在同一个文件夹中),我有以下内容 //= require jquery //= require jquery_ujs //= require foundation //= require_tree . 因此,正如预期的那样,fullcalendar.js在资产编译过程中被清理掉,并

我很抱歉,如果这已经被张贴在其他地方,但我不确定如何甚至短语搜索这个问题

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

//= require jquery
//= require jquery_ujs
//= require foundation
//= require_tree .
因此,正如预期的那样,
fullcalendar.js
在资产编译过程中被清理掉,并最终进入
application.js
,然后提供给用户

当我试图引用
fullcalendar.js
中定义的函数(编译资产后在
application.js
中定义)时,问题出现了。它抛出一个错误,声明
TypeError:$(…)。fullcalendar不是firebug的js控制台中的一个函数,当然,fullcalendar不会呈现

但是,现在,如果在所有其他脚本和样式表都被拉入后,我在布局文件中包含
,它将按预期工作

困惑的是,我查看了每个文件中的js并对它们进行了比较,看不出有什么不同。资产管道是否存在我不知道的问题,或者这是一个奇怪的DOM问题?我现在还不知道

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

让我困惑的是,这两个源都来自同一个文件,一个直接链接,另一个通过资产管道流程

application.js
-

fullcalendar.js
-


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

可能是依赖项错误。我建议你用更好的方法来练习这种lib

  • 将完整日历脚本放入
    vendor/assets/javascripts

  • 在application.js中,在树之前、jquery之后以及它所依赖的任何其他库中手动需要此脚本

    /=require 'fullcalendar`
    
  • 添加


    检查header中加载的Javascript文件,如果application.js是最后一个,则表示存在依赖项错误。调用lib之前,lib必须在那里。

    是的,因此,我确实在
    供应商/assets/javascripts
    部分中有它,但为了删除任何进一步移动的部分,我临时将它移动到
    app/assets/javascripts
    部分。无论我是否将文件保留在供应商或应用程序部分,我都会得到相同的结果:(但要明确的是,您完全正确,因为它们最好放在供应商文件夹中。@detectivist,我认为问题在于您在调用脚本之前加载库。您可以尝试删除
    require tree
    并手动要求每个文件,最后放入您自己的脚本。假设我有一个引用fu的小脚本在库中定义的操作。在脚本尝试调用该函数之前,我不需要加载该库吗?现在,我自己的脚本(调用该库的脚本)是在加载库本身之后加载的。我想这就是你的意思。@detectivist,是的,你完全正确。但是我在addi的application.js中没有看到这样的自定义代码对你的评论的评论让我思考。问题是我在加载jquery之前加载了我的脚本。因此,只需移动javascript_include_标记,以便在编译的application.js之前加载jquery就解决了这个问题。感谢你让我走上了正确的道路!