したがって、コントローラー用に次の 3 つの JS ファイルがあります。
movie.js.coffeee
application.js
facebook.js.coffee.erb
sessions.js.coffee
users.js.coffee
何らかの理由で、users.js.coffee または facebook.js.coffee.erb (またはその他のファイル) に JS コードを $(document).ready に配置すると、起動しません。つまり、users.js.coffee に簡単なアラートを入れます。
$ ->
alert 'hello'
しかし、これは実行されません。
facebook.js.coffee.erb で Facebook の JavaScript SDK を利用するコードもありますが、$(document).ready() 内にコードを配置すると、すべてが実行されません。
すべての JS コードを movie.js.coffee ファイル内に配置する必要がありましたが、すべてそこで動作します。そのファイル内に、次のコードがあります。
$ ->
#Home page login dropdown
$('.dropdown-toggle').dropdown()
$('.dropdown input, .dropdown label').click (e) ->
e.stopPropagation()
#Users edit page
$('.hint a').tooltip()
#Movie show page
$('#movie-tabs a:first').tab('show')
$('#movie-info').stickyMojo({footerID: '#footer', contentID: '#movie-description'})
私の application.js ファイルは次のようになります。
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_self
//= require_tree .
これは非常に厄介です。なぜこれが起こっているのでしょうか?JS コードが他のファイルの $(document).ready にラップされていない場合は機能しますが、理想的にはこれを避けたいと思います。