来自文档 http://guides.rubyonrails.org/asset_pipeline.html:
Sprockets 将所有 JavaScript 文件连接到一个主 .js 文件中
并将所有 CSS 文件合并到一个主 .css 文件中。
当然,这意味着当您进行更改时jobs.css
,您将看到相同的 css 应用于整个应用程序中的每个匹配元素。所有这些单独的 .css 文件都可以帮助您从人类的角度而不是从应用程序的角度来组织事物。
您可能只想根据您的页面提出不同的 ID 和类(例如#body_client
and #body_job
)来区分它们,但您可以看到随着应用程序的增长,这种命名约定会变得笨拙。
拥有独立的资产是可能的,但并非没有一些痛苦。
In application.js
, 消除:
//= require_tree
In application.css
, 消除:
*= require_tree
In 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
这应该可以让您设置单独的每页资源。检查原件博客文章 http://theflyingdeveloper.com/controller-specific-assets-with-rails-4/更多细节。