0

私はRails 4アプリケーションをいくつかのCoffeescriptと一緒に使用しています。Rails 4プリコンパイル時にCoffeeScriptが実行されない

スクリプトは完全に開発中です。ただし、プリコンパイルされるとすぐに、プリコンパイルされたアセットファイルに実際のコードが表示されても、まったく実行されません。

コードを最小限に抑えました。そのため、コンボボックスが変更されても動作していない場合、アラートが表示されます。 assets/javascriptディレクトリからすべての.coffeeファイルを削除して、この1つのCoffeescriptファイルとapplication.jsファイルだけを残して、他の.coffeeファイルとの競合がないようにしました。

私はまたターボリンクについて疑念を抱いていましたが、私はそれを取り除きましたが、まだ変更はありませんでした。アプリ/ビュー/出席/ _form.html.erb

<div class="container"> 
    <form action="/attendances/get_attendance_sheet" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="&#x2713;" />  <table class="table"> 
      <tr> 
       <td>Saison:</td> 
       <td><select name="season_id" id="season_id" class="form-control"><option value="">Choisir une saison</option><option value="1">Gadbois 2015</option></select></td> 
       <td>Entraînement du:</td> 
       <td><select name="session_id" id="session_id" class="form-control"><option value="">Choisir une date d&#39;entraînement</option><option value=""></option></select></td> 
       <td><input type="submit" name="commit" value="Ouvrir" class="btn btn-success" /></td> 
      </tr> 
     </table> 
</form></div> 
+0

悪いターボリンク...誰もがそれが原因だと思う。 – coreyward

+0

'$(document).on 'change'、 '#season_id'、 - > alert 'Success''を試してみませんか? – Leito

答えて

1

最後にこの問題が見つかったので、@itsnikolayに感謝します。問題は、別のjavascriptファイルが例外をスローしていたためです。それらをすべて1つのファイルにコンパイルすると、スクリプト全体が停止し、Coffescriptが実行されなくなります。

これは、gem rails-assets-tetherがブートストラップライブラリのツールチップを提供するために欠けていたためです。

デバッグモードでは、すべてのjavascriptファイルが個別にロードされるため、1つのファイルからの例外は他のファイルのロードに影響しません。

+0

ありがとう!この事実を完全に覆した。 "開発環境では、すべてのjavascriptファイルが独立してロードされるため、あるファイルの例外は他のファイルのロードに影響しません。テザーの例外は、犯人だった。 – Skovy

0

から

application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files 
// listed below. 
// 
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. 
// 
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 
// compiled file. 
// 
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details 
// about supported directives. 
// 
//= require jquery 
//= require jquery_ujs 
//= require bootstrap-sprockets 
//= require_tree . 

attendance.coffee

$('#season_id').on "change", -> 
    alert('Success!') 

フォームでは、JavaScriptのファイルをコンパイルチェック(http://yousite.net/application-[DIGEST].jsseason_idはありますか?season_idがある場合、コードを次のように変更してみてください。

$ -> 
    $('#season_id').on "change", -> 
    alert('Success!') 
+0

私は示唆したように変更し、このコンパイル済みのコードを得ました: (function(){ $(function(){ return $( '#season_id')on( "change"、function(){ return alert ! '); }); }); })コール(this); まだ何も起こっていません。 – Pascal

+0

@Pascalページに2つの 'season_id'があるので、1つだけを – itsnikolay

+0

@Pascalのままにして、それがうまくいかない場合は、次の行を変更してみてください:' $( '#season_id')。first()。on 'change'、 - > ' – itsnikolay

関連する問題