2

我目前正在使用 Rails 3.1。我只需要使用一个 css 文件,但问题是当我添加

<link href="http://mydomain.net/assets/some.css"></link>

它不存在。我需要从该特定 css 文件中获取 css 文件,并且不应加载其他 css 文件。

我如何在 Rails 3.1 中做到这一点?

更新:

将此添加到production.rb:

config.assets.precompile += ['some.css']

导致以下错误:

 ** [out :: domain.net] rake aborted!
 ** [out :: domain.net] stack level too deep
 ** [out :: domain.net] (in /home/deployer/apps/domain/releases/20120410204601/app/assets/stylesheets/some.css.scss)
 ** [out :: domain.net] 
 ** [out :: domain.net] Tasks: TOP => assets:precompile:primary
 ** [out :: domain.net] (See full trace by running task with --trace)

更新#2:

some.css 的文件名实际上是 some.css.scss。

更新#3:

我刚刚发现了这个问题,它是由这个引起的:

https://github.com/rails/sass-rails/issues/78

4

2 回答 2

7

当您在生产环境中时,您的所有资产都必须经过预编译,即转换为静态文件并复制到/public.

在生产中,您所有的个人文件app/assets都不能直接访问,因为它们没有预编译。运行时不会预编译您的单个 css 文件

rake assets:precompile

根据资产管道文档

如果您有其他清单或单独的样式表和 JavaScript 文件要包含,您可以将它们添加到预编译数组中:

所以对你来说,在你的 css 文件的顶部添加一个清单头:

/*
 *= require_self
 */

然后添加您的配置:

config.assets.precompile += ['some.css']

然后像往常一样预编译您的资产并访问您的 css 文件:

<%= stylesheet_link_tag 'some' %>

@Thorpe Obazee 编辑

如果只有 sass-rails 3.1.5 没有任何问题,答案基本上是正确的。所以我接受了答案。

https://github.com/rails/sass-rails/issues/78

于 2012-04-10T19:35:39.643 回答
0

您需要将样式表添加到资产文件夹中。然后使用

<%= stylesheet_link_tag    "some", :media => "all" %>

加载您的样式表。

于 2012-04-10T19:03:03.263 回答