Asset pipeline 仅使用Rails 3.2+;链轮&x2B;较少的

Asset pipeline 仅使用Rails 3.2+;链轮&x2B;较少的,asset-pipeline,less,sprockets,ruby-on-rails-3.2,Asset Pipeline,Less,Sprockets,Ruby On Rails 3.2,我对Rails有点陌生,到目前为止还不错。资产管道/链轮相当整洁,但我有点困惑。为我的各种控制器生成脚手架时,单个css/SCSS文件被放入app/assets/stylesheet中。但对于我的项目,我使用的不是SCS,而是更少,所以我用.css.LESS文件替换了它们 我遇到的问题是,如果我将CSS添加到一个控制器(例如,让我们称它为“home.CSS.less”),它将包含在每个视图中,而不仅仅是属于“home”控制器的视图。如果我从application.css文件中删除“*=requi

我对Rails有点陌生,到目前为止还不错。资产管道/链轮相当整洁,但我有点困惑。为我的各种控制器生成脚手架时,单个css/SCSS文件被放入app/assets/stylesheet中。但对于我的项目,我使用的不是SCS,而是更少,所以我用.css.LESS文件替换了它们

我遇到的问题是,如果我将CSS添加到一个控制器(例如,让我们称它为“home.CSS.less”),它将包含在每个视图中,而不仅仅是属于“home”控制器的视图。如果我从application.css文件中删除“*=require_tree.”,则该文件不会包含在任何视图中

如何使用Rails资源管道为特定的控制器/视图指定CSS代码

application.css:

/*
  *= require twitter/bootstrap
  *= require_self
  *= require "application_custom"
*/
home.css.less:

body {
  background: asset-url("circles.png") no-repeat;
}

上述结果导致没有背景应用,即使是家庭控制器的视图。

这是一个相当常见的请求;许多网站都有特定于主页的CSS,它们不希望应用于整个网站

如果可以的话,在提供解决方案之前,我将对此发表几点意见

管道的目的是向客户端呈现一个CSS(和一个JS)文件。添加摘要是为了允许添加服务器头,从而强制远程客户端在其本地缓存中保留它们的副本

出于性能原因,单一请求和主动缓存策略是Rails的默认策略;每个请求都会减慢页面速度

除非主页CSS非常广泛,否则我建议使用默认行为。如果想要将其分离出来是因为主页和其他页面之间CSS选择器的冲突,我建议改变CSS结构来克服这个问题

至少有两种常见的解决方案:

如果您希望为每个控制器手动创建不同的文件,则将使用第一个文件

<%= stylesheet_link_tag "application", controller_name %>

为了在生产环境中工作,您必须告诉rails预编译所有单独的CSS文件(在application.rb中):


config.assets.precompile从application.css中删除
require\u树。
,然后在主布局中添加一个
?这样可以保留main application.css的缓存。我只是试了一下,它似乎起了作用。是的,我假设树会被移除。
config.assets.precompile << '*.css'