2011-11-26 64 views
1

我在Rails 3.1中有一個應用程序,當我在application.css中進行任何更改時,所以這些更改不會應用在頁面上。Rails 3.1 - 如何更新CSS樣式

在Rails 3中,這裏還有別的東西嗎?

+1

您是否在使用資產管道? –

回答

2

您是否在生產模式下運行應用程序?如果是這樣的話,你需要預編譯這些資源(rake assests:預編譯)並重啓你的web服務器。

3

從Rails 3.1開始,編譯資產被寫入config.assets.prefix中指定的位置。您必須在部署過程中或在本地主機上使用下面的任務,如果你沒有寫訪問您的文件系統生產:

bundle exec rake assets:precompile 

你可以配置你的應用程序更快的資產預編譯。爲此,可以通過在config/application.rb中將config.assets.initialize_on_precompile設置爲false來部分加載應用程序。但是,您應該注意,在這種情況下,模板無法看到應用程序對象或方法。 Heroku要求將它設置爲false,所以如果你在那裏運行你的應用程序,你應該這樣做。

+0

我如何撤銷此操作?我應用了它,現在我需要運行這個每次更新我的CSS在開發模式 –

+1

我想我自己找到了答案。我只需從公共目錄中的資產文件夾中刪除編譯的資產。請糾正我,如果這是錯誤的:) –

+1

是的。我也必須做同樣的事情。 – Simpleton

1

我也偶然發現了這一點。

稍微戳動一下就會發現,當您運行rake資產時:precompile,作爲其進程的一部分,它會將application.css文件寫入公用文件夾。

看來,它是公用目錄中的application.css,它將在後續請求上提供服務,而不是您正在處理的資產文件夾中的服務。

如果刪除公共目錄中的application.css文件,則在重新加載頁面時應該能夠看到對CSS的更新。

我希望有幫助。