0

このコマンドを実行した後。
bundle exec rake assets:precompile RAILS_ENV=production

現在、jQuery はもう動作しません:(
コマンドを実行するまでは正常に動作していました。

その後、refreshCount();Web コンソールのコマンド ラインに入力すると、関数が読み込まれ、正常に動作します。
jQuery の部分 (document.ready) だけでは機能しなくなりました:(

どうすればこれを修正できますか?

assets/javascripts/application.js

...
//= require jquery
//= require jquery-ui
//= require twitter/bootstrap
//= require jquery_ujs
//= require jquery.ui.datepicker
//= require autocomplete-rails

ビュー/レイアウト/application.html.erb

<%= csrf_meta_tags %>
<%= javascript_include_tag 'application.js' %>
<%= javascript_include_tag 'delete.js.coffee' %>
<%= javascript_include_tag 'bootstrap.js.coffee' %>
<%= javascript_include_tag 'rails.js' %>
<%= javascript_include_tag 'registrations.js.coffee' %>
<%= javascript_include_tag 'tag-it.js' %>

<%= stylesheet_link_tag "application","http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/smoothness/jquery-ui.css" %>

<%= javascript_include_tag 'reload_count.js' %>

生成された HTML

<meta content="6Ee26DJl4R+RoEAP8mHpFaqAQkjAn1TtEFmrWXibfk=" name="csrf-token" />
<script src="/assets/application-hh43uu8e5f7e03b516a031d93d.js" type="text/javascript"></script>
<script src="/assets/delete-sj4u7032e3f5d3e60ceuu20c3f5792f.js" type="text/javascript"></script>
<script src="/assets/bootstrap-2b929657252555a21c8fe0915f73.js" type="text/javascript"></script>
<script src="/assets/rails-e69b066913d4a1ff967520b8444026d9.js" type="text/javascript"></script>
<script src="/assets/registrations-c8f90781b38ab1267919654197414382.js" type="text/javascript"></script>
<script src="/assets/tag-it-6bca56a5321c9d3e353987690b24ec8a.js" type="text/javascript"></script>

<link href="/assets/application-13c063e9f4b98571dfe06a1594565bdf.css" media="screen" rel="stylesheet" type="text/css" />
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/smoothness/jquery-ui.css" media="screen" rel="stylesheet" type="text/css" />

<script src="/assets/reload_count-0cdf66811b7eaff438be9c8b8cc932bf.js" type="text/javascript"></script>

assets/javascripts/reload_count.js

    jQuery(document).ready(function() {
        refreshCount();
    });


    function refreshCount() {
      $.ajax({
        url: "/messages/refresh_count",
        type: "GET",
        dataType: "script",
      });
    }
4

2 に答える 2

3

生成された HTML から、含まれている jQuery ライブラリを確認できません。jQueryがロードされていることを確認するだけでなく、通常のスクリプトと比較して多くの利点がある場合は、Google CDNを使用して含めるようにしてください。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
于 2013-05-06T08:40:19.750 に答える
1

独自の関数内で jQuery メソッドを使用しましたが、この関数はグローバル名前空間にあります。そのため、機能が動作しません。

代わりにこれを試してください

jQuery(document).ready(function() {
    refreshCount();
});
    
    
jQuery.fn.refreshCount = function() {
  $.ajax({
    url: "/messages/refresh_count",
    type: "GET",
    dataType: "script",
  });
}

PS Chrome または Safari デバッガーで [ネットワーク] タブを開いて、サーバーと交換されたメッセージを確認することもできます。

追加

require some_lib.js最初に、すべての js ファイルを 1 か所に配置することをお勧めします。. javascript_include_tagヘッダーで使用しているすべてのファイルをアセットに移動します。

次に、他のライブラリを無効にすることでデバッグできます。

//= require jquery
// <- Add other libs here later
//= reload_count.js

これが機能する場合は、問題が発生するまで他のライブラリを 1 つずつ追加すると、どのライブラリが問題を引き起こしたかがわかります。

于 2013-05-06T09:21:38.890 に答える