我在assets / stylesheets位置有一个clients.css和jobs.css。
每个都有一个相应的控制器。乔布斯是在客户之后用脚手架创建的。 scaffolds.scss文件是空白的。
application.css为空白
当我在jobs.css中对body{color:black}
之类的更改进行编码时,它会更改clients / index.html.erb视图和jobs / index.html.erb视图。
这可能是什么原因?我想为工作和客户提供单独的.css文件..
答案 0 :(得分:3)
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
这应该让您设置单独的每页资产。查看原始blog post了解详情。