ヘッダ内には
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" /> <script src="https://code.jquery.com/jquery-2.1.4.min.js" data-turbolinks-eval=false></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js" data-turbolinks-eval=false></script>
が出力されてるのに
body 内の<script></script> や asset/javascript 内で
console.log($("#modal")); console.log($("modal").modal); $("#modal").modal();
をかくと
jQuery.fn.init [div#modal.modal.fade, context: document, selector: "#modal"]
users?locale=ja:226 undefined
users?locale=ja:227 Uncaught TypeError: $(...).modal is not a function
at alert (users?locale=ja:227)
at HTMLDocument.<anonymous> (users?locale
というエラーになります
$("#modal") はきちんと存在していて $("#modal").modal が存在していないみたいです
chrome の開発ツール ネットワーク JS のログにも
bootstrap.min.js
がロードされたログがでていてここまでに他のエラーはでていません
他に大量の JS がよみこまれていてわざわざ modal を undefined にするようなものがあるとは考えにくいのですが
何か考えられる可能性や、原因を調べるにはどこをみればいいか心当たりのある方はいないでしょうか…
追記:
view は業務内容のためすべてはみせられませんが
全ページに対して body の序盤に
以下のようなサブビューを呼び出す render 'modal' をおいてます
<html> <head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> <script src="https://code.jquery.com/jquery-2.1.4.min.js" data-turbolinks-eval="false"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js" data-turbolinks-eval="false"></script> </head> <body> <div class="modal fade" id="modal" tabindex="-1"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span>×</span></button> <h4 class="modal-title">test</h4> </div> <div class="modal-body"> test body </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal"><%= t 'common.close' %></button> </div> </div> </div> </div>さらにテスト用に下記の様なシステムと同じ bootstrap, jquery のみよみこんだ 最小セットのHTMLをかいてブラウザで表示させると modal は動きます なので途中によみこまれるJSのどこかでわざわざ undefined で上書きされてるとしか思えないのですが 'modal' という単語でリポジトリ内を全検索してもそれらしいコードはみあたりませんでした…
<script>
$(function () {
$("#modal").modal();
});
</script>




回答1件
あなたの回答
tips
プレビュー