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:
我刚刚发现了这个问题,它是由以下原因引起的:
当您处于生产环境中时,必须预编译所有资产,即转换为静态文件并复制到/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
| 归档时间: |
|
| 查看次数: |
2163 次 |
| 最近记录: |