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、アセットのコンパイル後にで定義された) 関数を参照しようとすると問題が発生TypeError: $(...).fullCalendar is not a functionし、firebug の js コンソールにエラーが表示され、もちろん完全なカレンダーはレンダリングされません。

<%= javascript_include_tag "fullcalendar.js" %>ただし、他のすべてのスクリプトとスタイルシートが取り込まれた後でレイアウト ファイルに含めると、期待どおりに機能します。

困惑して、各ファイルの js を調べて比較しましたが、違いがわかりません。私が気付いていないアセット パイプラインで何かが起こっているのでしょうか、それとも DOM の問題でしょうか? 現時点ではわかりません。

参考までに、サイトのページ ソースにリンクされているapplication.jsとの両方のコンテンツを次に示します。fullcalendar.jsすべてを含めると要点やペーストビンには大きすぎるため、それぞれの関連する完全なカレンダー部分のみを含めました。

私を困惑させているのは、両方のソースが同じファイルから来ており、一方は直接リンクされているだけで、もう一方はアセット パイプライン プロセスを介して流れていることです。

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

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

洞察や助けをいただければ幸いです。

4

1 に答える 1

3

たぶん依存エラー。そのようなライブラリにはより良い方法を使用することをお勧めします。

  1. fullcalendar スクリプトをvendor/assets/javascripts

  2. ツリーの前、jquery およびそれが依存するその他のライブラリの後に、application.js でこのスクリプトを手動で要求します。

    /=require 'fullcalendar`
    

追加

ヘッダーでロードされた Javascript ファイルを確認します。application.js が最後である場合は、依存関係エラーがあります。ライブラリは、呼び出す前にそこにある必要があります。

于 2013-04-11T03:38:49.380 に答える