簡単に言えば、私の問題は、coffeescript で実装された jQuery-UI ハンドラー内から、ブートストラップ モーダルを作成して表示できないことです。ブートストラップのドキュメントにある標準のボタン アプローチを使用してモーダルを表示しようとすると、問題なく動作します。編集 3: これは、アセット パイプラインを使用する Ruby on Rails 3.2 アプリケーション内にあります。
<a href="#my-modal" role="button" class="btn" data-toggle="modal">Launch demo modal</a>
ただし、jQuery-UI イベント ハンドラー内からこれを行うと、次のようになります。
$("#my-modal").modal('show')
また
$("#my-modal").modal({})
次のエラーが表示されます。
Uncaught TypeError: Object [object Object] has no method 'modal'
私の html は非常に標準的です。ブートストラップ ドキュメントのサンプル html を使用しただけです。jQuery-UI イベント ハンドラ用の次の coffeescript があります。
$ ->
$("#selectable").selectable(
selected: (event, ui) ->
$("#my-modal").modal({})
)
編集:これはスコープの問題の匂いがするので、 -> と => を使ってモンキーを試してみましたが、それが何かを変えたかどうかを確認しましたが、それに対する変更は何の違いもありませんでした。
編集 2: javascript ライブラリが正しい順序で含まれていることを検証しました: jquery、jquery-ui、jquery_ujs、そして bootstrap.js。プルする必要がある別のライブラリがある可能性はありますか?
$("#my-modal") がモーダルDOMオブジェクトを正しく見つけることを検証しました
console.log $("#my_modal").html()
私はこれを理解するのに途方に暮れています。コードは完全に単純明快に見えます。