Rails CSS样式表互相覆盖

我在assets / stylesheets位置有一个clients.css和jobs.css。

每个都有一个相应的控制器 乔布斯是在客户之后用脚手架创建的。 scaffolds.scss文件是空白的。

application.css是空白的

当我在jobs.css中对诸如body{color:black}之类的更改进行编码时,它会更改clients / index.html.erb视图和jobs / index.html.erb视图。

这可能是什么原因? 我想为工作和客户提供单独的.css文件。

从文档 :

Sprockets将所有JavaScript文件连接成一个主.js文件,将所有CSS文件连接成一个主.css文件。

当然,这意味着当您对jobs.css进行更改时,您将看到在整个应用程序中应用于每个匹配元素的相同css。 所有这些单独的.css文件都可以帮助您从人的角度保持组织,而不是从应用程序的角度来看。

您可能希望根据您的页面(例如#body_client#body_job )提出不同的ID和类来区分它们,但是您可以看到这种命名约定在您的应用程序增长时如何变得难以处理。

拥有单独的资产是可能的,但并非没有一些痛苦。

application.js ,删除:

 //= require_tree 

application.css ,删除:

 *= require_tree 

application.html.erb ,添加以下内容:

 <%= stylesheet_link_tag "application", params[:controller], :media => "all" %> <%= javascript_include_tag "application", params[:controller] %> 

config/initializers/assets.rb创建一个新的初始化文件,并添加以下代码:

 %w( clients_controller jobs_controller ).each do |controller| Rails.application.config.assets.precompile += ["#{controller}.js.coffee", "#{controller}.css"] end 

这应该让您设置单独的每页资产。 查看原始博客文章了解更多详情。