2013-10-02 38 views
1

一個圖像在我的heroku應用程序中導致問題,所以我在production.rb中將config.assets.compile = false更改爲config.assets.compile = true。然後我跑rake assets:precompile並推送到heroku服務器。 jquery在應用程序網站上工作正常,但不再適用於我的本地副本。沒有錯誤在JavaScript控制檯中引發。以下是現在的一些重要文件。jquery預編譯後不能工作

Production.rb

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

    # Code is not reloaded between requests 
    config.cache_classes = true 

    # Full error reports are disabled and caching is turned on 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 

    # Disable Rails's static asset server (Apache or nginx will already do this) 
    config.serve_static_assets = false 

    # Compress JavaScripts and CSS 
    config.assets.compress = true 

    # Don't fallback to assets pipeline if a precompiled asset is missed 
    config.assets.compile = false 

    # Generate digests for assets URLs 
    config.assets.digest = true 

    # Defaults to nil and saved in location specified by config.assets.prefix 
    # config.assets.manifest = YOUR_PATH 

    # Specifies the header that your server uses for sending files 
    # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 
    # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 

    # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. 
    # config.force_ssl = true 

    # See everything in the log (default is :info) 
    # config.log_level = :debug 

    # Prepend all log lines with the following tags 
    # config.log_tags = [ :subdomain, :uuid ] 

    # Use a different logger for distributed setups 
    # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) 

    # Use a different cache store in production 
    # config.cache_store = :mem_cache_store 

    # Enable serving of images, stylesheets, and JavaScripts from an asset server 
    # config.action_controller.asset_host = "http://assets.example.com" 

    # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) 
    # config.assets.precompile += %w(search.js) 

    # Disable delivery errors, bad email addresses will be ignored 
    # config.action_mailer.raise_delivery_errors = false 

    # Enable threaded mode 
    # config.threadsafe! 

    # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 
    # the I18n.default_locale when a translation can not be found) 
    config.i18n.fallbacks = true 

    # Send deprecation notices to registered listeners 
    config.active_support.deprecation = :notify 

    # Log the query plan for queries taking more than this (works 
    # with SQLite, MySQL, and PostgreSQL) 
    # config.active_record.auto_explain_threshold_in_seconds = 0.5 
end 

的application.js

//= require jquery 
//= require jquery_ujs 
//= require jquery.ui.core 
//= require jquery.ui.widget 
//= require jquery.ui.mouse 
//= require jquery.ui.draggable 
//= require twitter/bootstrap 
//= require_tree . 


$(function() { 
    $("#draggable").draggable({ handle: "#handle" , containment: [0,0,1200,1000] , cursor: "crosshair" }); 
    }); 

UPDATE:這是通過刪除圖像,使新的圖像具有相同的名稱,然後推到Heroku的造成的。不要這樣做!

回答

2

沒有必要在本地進行預編譯。在服務器啓動時,鏈輪自動編譯靜態資產。

要解決問題,請刪除public/assets目錄中的編譯文件,提交更改,然後再部署到Heroku。

然後,在Heroku的,通過運行您的命令行下面編譯資產:

# from command line via the Heroku Toolbelt 
rake run assets:precompile 

您當地的資產將編譯服務器上啓動(從而使jQuery的可以再次使用),以及您的資產上Heroku將被預編譯爲public/assets目錄。

UPDATE

您可能需要清除瀏覽器緩存,保證了最新的資產路徑被加載到您的標記。

+0

我沒有看到應用程序/資產目錄中的任何編譯文件,他們隱藏? – Vigrant

+0

對不起,應該是'public/assets'。我已經更新了我的回答以反映。 – zeantsoi

+0

當我刪除編譯的文件,並重置服務器,應該jQuery的工作?因爲它不是。也許我沒有刪除所有編譯的文件? – Vigrant