(RoR)样式仍然适用,即使我将它们移动到了另一个控制器';什么是唯一的CSS文件?

(RoR)样式仍然适用,即使我将它们移动到了另一个控制器';什么是唯一的CSS文件?,css,ruby-on-rails,Css,Ruby On Rails,在我的RubyonRails应用程序中,我有一个博客控制器和一个站点控制器。这些样式都可以在sites.css文件中找到(该文件应该只应用于站点控制器),但它们也显示在blog控制器视图中。如果你想查看该页面,可以访问maxpleaner.heroku.com(除了博客页面外,其他所有页面看起来都不错——除了导航栏,博客页面上应该没有任何样式) 您可以在github.com/maxpleaner/homepage上查看源代码 基本上,在源代码中要注意的是css代码在app/assets/styl

在我的RubyonRails应用程序中,我有一个博客控制器和一个站点控制器。这些样式都可以在sites.css文件中找到(该文件应该只应用于站点控制器),但它们也显示在blog控制器视图中。如果你想查看该页面,可以访问maxpleaner.heroku.com(除了博客页面外,其他所有页面看起来都不错——除了导航栏,博客页面上应该没有任何样式)

您可以在github.com/maxpleaner/homepage上查看源代码


基本上,在源代码中要注意的是css代码在app/assets/stylesheets/sites.css.scss中,那么为什么它们要应用到blog controller中的blog页面呢?

这是因为在你的
应用程序.css
文件中有这一行

*= require_tree .

这将加载所有样式表文件,删除此行并加载特定于页面的样式表默认情况下,所有SCS和css文件都编译为一个application.css文件。为了方便起见,它们被分离成单独的文件。不过,这与Rails中的大多数内容一样,可以很容易地进行更改。查看application.css清单文件。

在Rails中,所有样式表都将合并到application.css中。如果您的application.css看起来像:

/*
 * This is a manifest file that'll automatically include all the stylesheets available in this directory
 * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
 * the top of the compiled file, but it's generally better to create a new file per style scope.
 *= require_self
 *= require_tree . 
*/
CSS清单中的require_tree指令需要当前目录中的所有样式表

 *=require_tree .
您可以要求一个名为(站点)的特定样式表,其中包含:

您可以指定单个文件,并按照指定的顺序编译它们。例如,您可以通过以下方式将三个CSS文件连接在一起:

/* ...
*= require reset
*= require layout
*= require chrome
*/
有关详细信息,请参阅此

如果您想包含一个名为custom的目录,其中包含CSS文件,请在application.CSS中指定它,如下所示

*= require_tree ./custom

可能是重复的,那么我该放什么呢?我不知道一旦我删除了
*=require\u tree
删除了包含*=require\u tree的行,该怎么办。现在只包括你想要的css。例如,如果您只需要两个名为sites和homes的css文件,那么只需添加*=require sites(下一行)*=require homesi更新的答案,并包括参考链接,以获取有关如何完成此操作的详细信息。感谢您的帮助,但我仍然有点困惑。如果我希望sites.css只应用于“sites”视图,我应该(1)从application.html.erb中删除
require tree.
,并(2)将
require sites
添加到application.html.erb中吗?那么我应该放什么呢?删除
*=require\u tree
*= require_tree ./custom