2011-10-12 83 views
18

當我在生產模式下啓動rails時,它會預編譯所有資產,但無法提供application.css資源。我查看了public/assets並且存在預編譯的application.css。在Rails 3.1生產模式中找不到預編譯的CSS

但是,每當我嘗試從頁面訪問它時,我都會得到一個404。

這些是我用來啓動服務器的說明,如果這可能有所幫助。

RAILS_ENV=production bundle exec rake assets:clean 
RAILS_ENV=production bundle exec rake assets:precompile 
rails -e production 
+0

我不使用Rails 3.1,但不是應用程序根目錄下的assets資料夾,而不是'public'文件夾?請原諒我,如果這是錯誤的。 – bricker

+1

這是錯誤的,它在'public'文件夾 –

回答

34

如果你想Rails的爲您服務有以下行添加到您的production.rb靜態資產:

config.serve_static_assets = true 

我明白這是更好地讓Apache或nginx的爲他們服務,但是這個作品,如果你正在使用一個獨立的服務器(或者至少它可以用於瘦)

0

能否請您確認您已經

<%= stylesheet_link_tag "application" %> 
在頭段

在您的應用程序佈局,而不是像這樣:

<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css" /> 

這確保了預編譯應用程序-XXX。 CSS將包括在內。

+0

是的,我有stylesheet_link_tag –

+0

你原來的appliation.css位於哪裏?它在/app/assets/stylesheets/application.css中嗎?此外,html源代碼在樣式錶鏈接標記方面是什麼樣的?它是否引用application.css或預編譯的application-xxx.css? – emrass

+0

原始application.css位於/ app/assets/stylesheets /中。 html源文件引用預編譯的應用程序-xxx.css –

3

因此,事實證明,rails不負責提供它所預編譯的靜態資產。您必須配置您使用的Web服務器(即nginx)爲您提供這些靜態資產而不是導軌。我希望這些文件更清晰。

+0

可以提供關於如何配置服務器的鏈接? –

相關問題