3

javascript/coffescript ファイルを、それらを使用するページにのみロードしたいと考えています。したがって、私のapplication.html.erbファイルには、頭の中に次のコードがあります

<%= yield :head %>

次に、私が持っているJavaScriptをロードしたい特定のビューで

<% content_for(:head) do%>
<%= javascript_include_tag 'application' %>
<% end%>

これは最初はうまくいくようです。JavaScript を入れたくないページに初めてアクセスしたとき、js ファイルへのリンクがありません。ただし、上記のコード ブロックを含むページにアクセスすると、それ以降にアクセスするすべてのページ (たとえば、ホームページ) にリンクが表示されます。その後、ホームページでブラウザを更新すると、リンクが再び消えます...

これ自体は実際には問題ではありませんが、私の application.html.erb ヘッド セクションにもこれがあります。

<style><%= yield :stylesheets %></style>

一部のレイアウトでは、そこに生成される css があります。ここが本当に奇妙になるところです。ページ A には js も追加の css もありません。ページ B には js も追加の css もありません。ページ C には js と追加の css の両方があります。次に、次のことを順番に実行します。

Visit page A => everything is fine
Visit page B => everything is fine (additional css is loaded)
visit page A again => everything is fine (additional css is not loaded)
visit page C => everything is fine (additional css and js loaded)
visit page A again => NOT GOOD!!! (additional css and js still loaded)

どういうわけか、javascript のインクルード タグが原因で、私の content_for(:stylesheets) の内容が、私が望まなくても持続するようになっています。ページ A で手動更新を行うと、ページ C にアクセスするまで、すべてが正常に戻ります。これを自分のページに入れてみました。

<% content_for(:head) do%>
<% end%>

何か案は?

4

3 に答える 3

4

With turbolinks enabled, it won't work. What you need to do is either disable turbolinks or put your javascript and css inside the body of your page.

于 2014-02-06T18:05:58.567 に答える