2011-12-08 7 views
10

私はいくつかのレール3.1アプリを持っています。JSファイルはレールアプリに二重付属しています

私は自分のapplication.jsファイルに含まれるjsファイルをたくさん持っています。ここに私application.jsです:

//= require jquery 
//= require jquery-ui 
//= require jquery_ujs 
//= require_self 
//= require_tree . 

問題は、私がconfig.assets.debugてきたときに、development.rb、trueに設定私のJavaScriptファイルのすべてが二重含まれるヘッダに入るということです。実際には、明示的に二重インクルードされているわけではありませんが、一度個別に、そしてコンパイルされたapplication.jsファイルの一部として一度インクルードされます。 jsインクルードタグは次のようになります。

<script src="/assets/jquery.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script> 
<script src="/assets/application.js?body=1" type="text/javascript"></script> 
<script src="/assets/animation_elements.js?body=1" type="text/javascript"></script> 
<script src="/assets/categories.js?body=1" type="text/javascript"></script> 
<script src="/assets/facebox.js?body=1" type="text/javascript"></script> 
… 

どうしてですか?この結果、さまざまなJQueryのonClick()ビヘイビアが2回、他のナンセンスで実行されています。何が問題なの?あなたはいくつかの点であなたの資産をプリコンパイルしていることがあるかのように

Geobooks::Application.configure do 
    # Settings specified here will take precedence over those in config/application.rb 

    # In the development environment your application's code is reloaded on 
    # every request. This slows down response time but is perfect for development 
    # since you don't have to restart the webserver when you make code changes. 
    config.cache_classes = false 

    # Log error messages when you accidentally call methods on nil. 
    config.whiny_nils = true 

    # Show full error reports and disable caching 
    config.consider_all_requests_local  = true 
    #config.action_view.debug_rjs    = true 
    config.action_controller.perform_caching = false 

    # Don't care if the mailer can't send 
    config.action_mailer.raise_delivery_errors = false 

    # Print deprecation notices to the Rails logger 
    config.active_support.deprecation = :log 

    # Only use best-standards-support built into browsers 
    config.action_dispatch.best_standards_support = :builtin 

    #for devise 
    config.action_mailer.default_url_options = { :host => 'localhost:3000' } 

    # Do not compress assets 
    config.assets.compress = false 

    # Expands the lines which load the assets 
    config.assets.debug = false 
end 

答えて

14

ですね:記録のために、ここに私の全体のdevelopment.rbファイルです。開発中に提供されているapplication.jsファイルの内容を確認します。私の推測では、必要なすべてのファイルのバンドルされた内容が表示されます。これを修正するには、/public/assets/javascripts/application.jsを削除してサーバーをバウンスしてください。

問題が解決しない場合は、2番目のコピーは(提供されるファイルを調べるためにFirebugのまたは類似を使用して)から、更新を投稿し、私は私が何ができるかがわかりますされている場所を把握。

+1

あなたは、JSファイルをapplication.jsファイルにコンパイルされていることを正確に正しいですが、私はすでにそれを知っていました。私はherokuに私のアプリをプッシュする前に私の資産をプリコンパイルします。プリコンパイルされたアセットを削除し、manifest.ymlをgitIgnoreし、herokuがプリコンパイルを処理するように思えます。私はそれを試みます。 – CharlieMezak

+0

@CharlieMezakはその仕事をしましたか? –

関連する問題