2011-10-12 92 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

可以提供关于如何配置服务器的链接? –

相关问题