18

当我在生产模式下启动 rails 时,它会预编译所有资产,但无法为 application.css 资产提供服务。我看了看,public/assets预编译的 application.css 存在。

但是,每当我尝试从页面访问它时,我都会收到 404。

这些是我用来启动服务器的说明,如果这可能有帮助的话。

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

3 回答 3

34

如果您希望 Rails 提供静态资产,您可以在您的 production.rb 中添加以下行:

config.serve_static_assets = true

我知道最好让 apache 或 nginx 为它们提供服务,但是如果您使用的是 rails 独立服务器(或者至少它适用于瘦服务器),这将有效

于 2011-12-30T14:48:22.423 回答
3

事实证明,rails 不负责为它预编译的静态资产提供服务。您必须配置您使用的 Web 服务器(即 Nginx)来为您提供这些静态资产,而不是 Rails。我希望这在文档上更清楚。

于 2011-10-16T01:00:05.543 回答
0

你能确认你有

<%= stylesheet_link_tag "application" %>

在应用程序布局的 head 部分中,而不是类似:

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

这确保将包含预编译的 application-xxx.css。

于 2011-10-12T09:38:26.310 回答