如何在Rails 3.1中访问单个css文件?

Tee*_*eej 2 ruby-on-rails asset-pipeline

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

<link href="http://mydomain.net/assets/some.css"></link>
Run Code Online (Sandbox Code Playgroud)

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

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

更新:

将其添加到production.rb:

config.assets.precompile += ['some.css']
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

 ** [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)
Run Code Online (Sandbox Code Playgroud)

更新#2:

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

更新#3:

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

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

Tho*_*ory 7

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

在生产中,所有单个文件app/assets都无法直接访问,因为它们未经过预编译.运行时,不会预编译您的个人css文件

rake assets:precompile
Run Code Online (Sandbox Code Playgroud)

根据资产管道文档:

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

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

/*
 *= require_self
 */
Run Code Online (Sandbox Code Playgroud)

然后添加您的配置:

config.assets.precompile += ['some.css']
Run Code Online (Sandbox Code Playgroud)

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

<%= stylesheet_link_tag 'some' %>
Run Code Online (Sandbox Code Playgroud)

由@Thorpe Obazee编辑

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

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