2016-04-24 9 views
1

Rails 4アプリケーションに宝石を読み込む際に問題が発生しました。Rails - jQueryとjavascriptとの競合

私はjQueryを使用しています。私application.jsでは、私が持っている:私の宝石ファイルで

//= require jquery 
//= require bootstrap-sprockets 
//= require jquery_ujs 
//= require html.sortable 
//= require disqus_rails 
//= require moment 
//= require bootstrap-datetimepicker 
//= require pickers 
//= require main 
//= require hammer.min 
//= require jquery.animate-enhanced.min 
//= require jquery.countTo 
//= require jquery.easing.1.3 
//= require jquery.fitvids 
//= require jquery.magnific-popup.min 
//= require jquery.parallax-1.1.3 
//= require jquery.properload 
//= require jquery.shuffle.modernizr.min 
//= require jquery.sudoSlider.min 
//= require jquery.superslides.min 
//= require masonry.pkgd.min 
//= require rotaterator 
//= require smoothscrolljs 
//= require waypoints.min 
//= require wow.min 
//= require gmaps/google 
//= require chosen-jquery 
//= require cocoon 
//= require imagesloaded.pkgd.min 
//= require isotope.pkgd.min 
//= require jquery.counterup.min 
//= require jquery.pjax 
//= require custom.js 
//= require slider 
//= require dependent-fields 
//= require bootstrap-slider 

$.noConflict(); 
jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
    $(document).ready(function() { 
     DependentFields.bind() 
    }); 
}); 


//= require_tree . 

を、私はレールに依存フィールドの宝石を使用しようとしています。その宝石にはアンダースコアも必要です。

私はこの宝石が機能していない理由は、JavaScriptを使用しているためだと思います。

私がしているローカルホスト/エラー上げされている(ディスカスレールの宝石と同じ問題を抱えている:94キャッチされない例外TypeError:$関数

ではありません誰もがレールの間の競合のjQueryを解決する方法を知っていますし、 JavaScriptの

答えて

0

あなたは匿名関数で$変数を使用して、あなたのjavascriptのコードをラップするようにしてください:?

(function($){ 

// put your code here 

})(jQuery); 
+0

私がunderscore.jsファイルでそれを試しても、従属フィールドのレール部分が動作することができません。 – Mel

1

問題は、あなたがこのラインを通ってnoConflictモードで動作するようにjQueryを設定しているということです。$.noConflict();。 jQueryは変数$をグローバルに定義することはなく、jQuery変数のみで利用可能になります。

$.noConflict(); // <===== HERE ====== 
jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
    $(document).ready(function() { 
     DependentFields.bind() 
    }); 
}); 

このエラーを上げている「プラグインは、」おそらく$変数を設定することが期待されています。しかし、彼らはそれをしてはいけません。

  1. があなたのapplication.jsファイルから$.noConflict();行を削除します。

    あなたは、2つのオプションがあります。

  2. $が変数jQueryに設定されている関数に、このエラーが発生しているコードをラップします。このよう

(function($){ 
    // Here: $ === jQuery 
    // Put js code that raises error here 
})(jQuery); 

また、あなたのコード内の2つの文書準備イベントを使用しています。

+0

でもコードは宝石です。どのように私はそれをラップするのですか? – Mel

+0

私は参照してください。最初のオプションで '$ .noConflict();'行を削除する必要があります。それ以外の場合は、GitHub上のgemを見つけ、改良されたプルリクエストを作成してください。 – Uzbekjon

+0

私は分かりません。オプション1として提案したコードのgemファイルに宝石をラップしますか? – Mel

関連する問題