2017-04-18 4 views
1

私はRailsアプリケーションを持っています。 JavaScriptはscriptタグのindex.html.erbビューに含まれていると完全に動作します。 JavaScriptをapplication.jsファイルに配置しても、JavaScriptはまったく動作しません。RailsアプリケーションJavaScriptがapplication.jsに配置されていると動作しません

ここに私のapplication.jsファイル全体があります。このコードは動作しません:

//= require jquery 
//= require jquery_ujs 
//= require bootstrap-sprockets 
//= require turbolinks 
//= require_tree . 


var acc = document.getElementsByClassName("accordion"); 
var i; 

for (i = 0; i < acc.length; i++) { 
    acc[i].onclick = function(){ 
     this.classList.toggle("active"); 
     var panel = this.nextElementSibling; 
     if (panel.style.display === "block") { 
      panel.style.display = "none"; 
     } else { 
      panel.style.display = "block"; 
     } 
    } 
} 

実際のビューでスクリプトタグに含まれるこのまったく同じコードは完璧に動作します:

<script> 
var acc = document.getElementsByClassName("accordion"); 
var i; 

for (i = 0; i < acc.length; i++) { 
    acc[i].onclick = function(){ 
     this.classList.toggle("active"); 
     var panel = this.nextElementSibling; 
     if (panel.style.display === "block") { 
      panel.style.display = "none"; 
     } else { 
      panel.style.display = "block"; 
     } 
    } 
} 

</script> 

誰かがなぜこれが起こっている私が把握助けることができますか?ありがとう

答えて

1

あなたのコードはコンパイルされたapplication.jsに含まれていないため、実行されていません。これは、ブラウザでjavascriptファイルのソースを調べることで確認できます。あなたはファイル自体の内容を注入マニフェストスプロケットにrequire_selfを追加する必要が

//= require jquery 
//= require jquery_ujs 
//= require bootstrap-sprockets 
//= require turbolinks 
//= require_self 
//= require_tree . 

あなただけrequire_tree .に必要なファイルとしてあなたのメインの「マニフェスト」ファイルに対してこの操作を行う必要があるが、もちろんあります含まれています。

参照:
- The Assets Pipeline - 2.4 Manifest Files and Directives

関連する問題