在Rails 3.1生产模式下找不到预编译的CSS。

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

我不用Rails 3.1,但是assets文件夹不应该在你的应用程序根目录下,而不是public文件夹中吗?如果我错了,请原谅。 - bricker
1
这是错误的,它在“public”文件夹中。 - Kiran Ryali
3个回答

34
如果你想让Rails提供静态资源文件的服务,你需要在production.rb文件中添加以下代码:
config.serve_static_assets = true

我知道最好让Apache或Nginx来提供服务,但是如果你正在使用Rails独立服务器(或者至少在使用thin时),这个方法也可以运行。


3

事实证明,Rails不负责提供预编译的静态资源。你必须配置你使用的Web服务器(如nginx)来代替Rails为你提供这些静态资源。我希望文档中能更清晰地说明这一点。


你能提供一个关于如何配置服务器的链接吗? - Rushabh Ajay Hathi

0

请确认您已经

<%= stylesheet_link_tag "application" %>

在您的应用程序布局中,将其放置在头部段而不是类似以下内容的位置:
<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css" />

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


你的原始appliation.css文件在哪里?它在/app/assets/stylesheets/application.css中吗?此外,HTML源代码中样式表链接标签是什么样子的?它引用application.css还是预编译的application-xxx.css? - emrass
原始的application.css位于/app/assets/stylesheets/。HTML源代码引用了预编译的application-xxx.css。 - Kiran Ryali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接