先日、送信ボタンをクリックしてフォームが複数回送信されるという Ajax の問題に遭遇しました。ブラウジングを行ったところ、誰かが public/assets フォルダーを削除するように勧めました。そうしてサーバーを再起動したところ、Javascript ライブラリの一部が正しく機能していないことがわかりました...
Firebugデバッガーでソースコードを見ると、確実にロードされていることがわかるので、実際には非常に奇妙です。キャッシュをクリアしようとしたり、アセットを開発モードでプロコンパイルしようとしたり、システムを再起動しようとしたりしましたが、どれも機能しませんでした。public/assets フォルダーを削除した後、Javascript が実行されず、サイレントに失敗します。 -編集を参照
この号の作成方法のクイック リファレンス:
- 停止したサーバー
- 削除されたパブリック/アセット
- サーバーを再起動し、問題に気づきました
- キャッシュをクリアしました
- サーバーを再度停止し、アセットのプリコンパイルを試みました
私が試した追加のこと:
- development.rbに設定
config.serve_static_assets = false
し、再度プリコンパイルしてサーバーを再起動 rails s -e development を介して開発モードで実行していることを確認しました
tmp/cache フォルダーを削除しました
追加情報:
Rails バージョン 3.1.3 を使用しています
私は最近、開発時に config.cache_classes を true に設定する必要がある Gem を使い始めました。false に設定して再テストすることで、これが問題ではないことを確認しました。
編集
さらにテストしたところ、私の変更により、次のコードがトリガーされないことが示されました。
<script type="text/javascript">
$(document).ready(function() {
alert("Hello world!")
});
</script>
しかし、これはうまくいきます:
<script type="text/javascript">
alert("Hello world!")
</script>
最初は、アセット パイプラインからファイルがロードされていないと思っていましたが、代わりに、私の変更が舞台裏で何らかの競合を引き起こしたようです。私は自分の application.js ファイルから削除require_tree
し、ライブラリを手動で読み込もうとして、ライブラリが再び機能し始めたことを確認しましたが、これは私にとって理想的な修正ではありません。