2

おそらく最初に、プリコンパイルを行っていないことに言及する必要があります。

8 つの異なる Js ファイル (Application.js を除く 7 つ) があり、使用すると次のよう<%= javascript_include_tag 'application' %>に出力されます。

<script src="/assets/admin.js?body=1" type="text/javascript"></script>
<script src="/assets/brand.js?body=1" type="text/javascript"></script>
<script src="/assets/category.js?body=1" type="text/javascript"></script>
<script src="/assets/home.js?body=1" type="text/javascript"></script>
<script src="/assets/product.js?body=1" type="text/javascript"></script>
<script src="/assets/setting.js?body=1" type="text/javascript"></script>
<script src="/assets/user.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>

このため、(Toggles を使用する) 私の jQuery の一部は、複数回実行されているため機能しません。

単純にapplication.jsを使用するにはどうすればよいですか?

私の Application.js ファイル:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require jquery.ui.all
//= require_tree .
4

4 に答える 4

0

あなたの問題は、「//= require_tree」という行のために、application.jsが現在のディレクトリにあるすべてのjsファイルをロードすることです。おそらく、異なるページの html 要素に同じ名前 (id とクラス) を使用しているので、解決策の 1 つは、「//= require_tree 」を引き続き使用することです。application.js でページ内の各要素に一意の名前を付ける場合、他の解決策は「// = require_tree」を削除することです。あなたのapplication.jsから、これを使用してください:

<%= javascript_include_tag "application", controller_name %>

ここで、新しいコントローラーを生成すると、Rails は自動的にコントローラーの名前で JavaScript ファイルを作成します。javascript_include_tag に "controller_name" オプションを追加すると、現在のコントローラーの js ファイルが追加されます。これらのファイル スイッチ コントローラーで JavaScript の指示を行います。

この方法は非常に優れていると思いますが、この件に関する他の回答をここで見つけることができる他の解決策があります:

Rails 3.1アセットパイプライン:コントローラー固有のスクリプトをロードする方法は?

幸運を ;)

于 2013-05-17T15:21:35.003 に答える
0

私も同じ問題を抱えていました。application.html.erb他のjsファイルを追加していないかどうかを確認してください。.On the application.jsがある場合//= require_tree、すべてが追加されるため、追加するapplication.html.erbと繰り返されます。

于 2013-11-07T01:04:40.843 に答える
0

//= require_tree .そのマニフェストと同じディレクトリにすべてをロードします ( .)。

JavaScript を手動で含めたい場合は、その行を削除するだけです。ただし、すべてのページにすべての JavaScript を含める場合は、その行をそのままにして、インクルードを削除してください。

于 2013-05-17T14:59:55.683 に答える