2

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

誰かがこれについて私を助けてくれることを願っています。これは数日間私を悩ませています。どんな助けでも感謝します。ありがとう!

4

1 に答える 1