Ruby on rails 3 在rails 3.2中预编译控制器资产
我为每个控制器都有一个单独的scss文件,我不会将它们全部导入application.css文件,这样我就可以在布局中包含特定于控制器的样式表和js文件 因此,在布局中,我会:Ruby on rails 3 在rails 3.2中预编译控制器资产,ruby-on-rails-3,asset-pipeline,rake-task,Ruby On Rails 3,Asset Pipeline,Rake Task,我为每个控制器都有一个单独的scss文件,我不会将它们全部导入application.css文件,这样我就可以在布局中包含特定于控制器的样式表和js文件 因此,在布局中,我会: <%= stylesheet_link_tag "application" %> <%= stylesheet_link_tag params[:controller], :media => "all" %> <%= javascript_include_tag 'applicatio
<%= stylesheet_link_tag "application" %>
<%= stylesheet_link_tag params[:controller], :media => "all" %>
<%= javascript_include_tag 'application' %>
<%= javascript_include_tag params[:controller] %>
我需要如何使用舱单才能做到这一点?找不到使用scss本身导入整个目录的方法
这是一个坏主意,因为它会为每个页面加载添加额外的HTTP请求,需要大量额外的文件(大部分文件都是空的,很少会有实际的特定于控制器的CSS/JS),并忽略浏览器缓存(缓存application.CSS/JS一次,然后忘记它) 最好以这样一种方式编写CSS/JS,即您可以将其全部包含在一起,并正确使用资产管道。解决方案: 到config/application.rb文件 添加此行:
config.assets.precompile += ["controller1.js", "controller1.css", "controller2.js", "controller3.js"]
下次运行assets:precompile时,它也会编译这些文件,比如:
config.assets.precompile += Dir::entries("app/assets/javascripts").
map{|f| f[/^(?!application\.).*\.js/]}.compact
用这个问题更新了这个问题。我更喜欢应用程序CSS和JS,然后是每个控制器的CSS和JS。因为控制器正在将我的应用程序拆分为特定的部分。我不喜欢将我所有的JS和CSS都转储到一个文件中。这是可以做到的,但是为什么要使用所有未使用的选择器和空的jquery选择器呢?我正在寻找一种自动实现这一点的方法,但找不到一种干净的方法。
config.assets.precompile += Dir::entries("app/assets/javascripts").
map{|f| f[/^(?!application\.).*\.js/]}.compact