Heroku Rails 4 アプリケーションに表示される JavaScript アイテムを取得しようとしています。私のローカル開発マシンでは、すべてが完璧に動作しています。Heroku では動作しません。
私のapplication.html.erbファイルに追加しました:
<%= javascript_include_tag "application" %>
そして別のビューファイル(events.html.erb)には次のものがあります:
<script type="text/javascript">
$(document).ready(function()
...code to add data to a timeline using getjson()...
</script>`
これは、assets>javascripts フォルダー内の timeline.js ファイルを参照しています。イベントが追加されると (Rails CRUD 操作を使用して、javascript コードは getJson() メソッドを呼び出し、イベントをタイムラインに追加します。これはローカル マシンで期待どおりに機能します。
Heroku にプッシュすると、レール経由でイベントを追加できますが、タイムラインが表示されません。
私の最初の考えは、Javascript が Heroku に読み込まれていないということだったので、簡単に追加しました:
<script type="text/javascript">
alert('Displays OK')
</script>
を呼び出すと、Heroku (およびローカル マシン) で問題なく表示されます。
Heroku でページのソースを見ると、次のことがわかります。
<script src="/assets/application-6da332d35efc3706e98f87ead9900f20.js">
したがって、timeline.js ファイルがプリコンパイルされているように見えます (タイムライン js の最小化されたバージョンのようです)。
私のローカル マシンでは、プリコンパイルされた js ファイルは表示されませんが、次のように表示されます。
<script src="/assets/timeline.js?body=1"></script>
<script src="/assets/timeline.min.js?body=1"></script>
Heroku では、タイムラインではなく JavaScript アラートが表示されるという事実は、プリコンパイルの JavaScript コードで何かが台無しになっていることを示しているようです。
heroku のログに明らかなものは何もありません。スラッグのコンパイルが正常に終了したと表示され、エラー メッセージが表示されません。
プリコンパイルされたjsファイルを使用しないようにHerokuに強制できる方法はありますか?Herokuで実行できます:
<script src="/assets/timeline.js?body=1"></script>
<script src="/assets/timeline.min.js?body=1"></script>
production.rb ファイルには次のものがあります。
config.serve_static_assets = false
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.assets.compress = true
config.assets.digest = true
config.assets.debug = false
誰かがこれについて私を助けてくれることを願っています。これは数日間私を悩ませています。どんな助けでも感謝します。ありがとう!