2013-02-15 62 views
1

我配置我的應用程序在Heroku上的內容更新,但我有一個問題。在開發模式下,當我更改CSS的一部分並刷新瀏覽器時,我的CSS不會加載。我的application.js將無法正常工作和application.css不會在Rails的

我查了日誌和application.css不會加載。我需要它在開發模式下每次加載。此外,我的application.js停止工作,我不知道爲什麼。

development.rb:

# Do not compress assets 
    config.assets.compress = false 
    config.assets.precompile += %w(login.css) 

    # Expands the lines which load the assets 
    config.assets.debug = true 

enviroment.rb:

config.active_record.whitelist_attributes = true 

    # Enable the asset pipeline 
    config.assets.enabled = true 

    # Version of your assets, change this if you want to expire all your assets 
    config.assets.version = '1.0' 

    config.assets.initialize_on_precompile = true 

我編譯資產使用$ rake assets:precompile RAILS_ENV=development手動和它的作品除外的application.js代碼:

//= require jquery 
//= require jquery_ujs 
//= require_tree . 
//= require jquery.reveal 
$(document).ajaxStart(function() { 
    $("#load_img").animate({ 
      height:"toggle", 
     opacity:"toggle" 
     }); 
}); 

$(document).ajaxSuccess(function() { 
    $("#load_img").fadeOut('fast'); 
}); 

$(document).ready(function() { 
    setTimeout(
    function() { 
     $("#flash_messages").fadeOut(3000) 
    }, 
    2500); 
}); 

在部署到Heroku之前一切正常。

回答

4

你不需要application.js文件本身。使用require_self像這樣:

//= require jquery 
... 
//= require_self 

$(function() {}); 

也相當肯定你應該擁有的包括結束在application.js文件本身代碼的開始之間的換行符。

而且這條線:

config.assets.precompile += %w(login.css) 

大概應該是在application.rb並不僅僅是development.rb,但如果你是手動預編譯在開發模式的資產部署到Heroku的它不應該的問題了。如果你想看到的發展變化

+0

由於通過本名爲.js解決,非常感謝的解決方案,但是在CSS我改變的地方,你怎麼說,但這個沒有解決我的問題,我需要編譯成作品的CSS,我想改變的CSS代碼,刷新瀏覽器工作我的變化,即時開發需要這個,以及在我之前爲heroku不知道什麼 – overallduka 2013-02-15 23:53:40

+0

正如@ Qumara指出,你應該運行'$ rake assets:clean'來刪除你的編譯版本。那麼你應該能夠看到變化。 – AJcodez 2013-02-15 23:57:21

2

,你不應該預編譯的資產。要恢復預編譯,請嘗試rake assets:clean。另外,在清單文件application.js中有js代碼並不是一種好的風格。在app/assets/javascripts/中創建一個新文件並將代碼移到那裏。

+0

那麼,它在localhost上工作,但在heroku上,因爲我也運行了我部署的預編譯,但不更新heroku資產,我需要這種解決方案? – overallduka 2013-02-22 12:55:09

+0

我認爲在部署過程中有一個用於預編譯資源的例程,所以如果您再次預編譯它們,那就錯了。 – 2013-02-22 15:01:38

+0

嗯,但我的資產修改不更新在heroku,我如何修復這個,如果我手動運行編譯,沒有作品的耙資產:清潔如何在本地。 – overallduka 2013-02-22 17:21:54

0

在開發中預編譯您的資產意味着您將需要保留預編譯它們以查看您所做的任何更改。

當您預編譯的資產,這將創建一個public/assets靜態css文件,並在尋找新文件的資產管道之前,你的web服務器將始終提供靜態資產(例如那些public/assets)。

通過手動清空public/assets或致電rake assets:clean來清理預編譯的文件。

當你部署到Heroku的,它會自動編譯資產,你上部署。

+0

那麼,它在localhost上工作,但在heroku上,因爲我也運行了我部署的預編譯,但不更新heroku資產,我需要這種解決方案? – overallduka 2013-02-22 03:03:30