Rails 5资产命名

时间:2016-11-28 02:55:15

标签: ruby-on-rails ruby-on-rails-5

为什么我的主要scss文件需要被调用' application.scss'?为什么不能命名为' foo.scss'并包含在application.html.erb中?

manifest.js

// JS and CSS bundles
//
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css


// Images and fonts so that views can link to them
//
//= link_tree ../fonts
//= link_tree ../images

Css import

<%= stylesheet_link_tag 'foo', media: 'all' %>

使用&#39; foo.scss&#39;

时出错
  

未声明资产在生产中预编译。   将Rails.application.config.assets.precompile += %w( foo.css )添加到config/initializers/assets.rb并重新启动您的服务器

如果我使用文件名&#39; application.scss&#39;它运作得很好。

1 个答案:

答案 0 :(得分:2)

Ruby on Rails预编译资产。用于编译文件的默认匹配器包括application.jsapplication.css以及所有非JS / CSS文件(这将自动包括所有图像资源)来自app/assets文件夹,包括您的宝石:

[ Proc.new { |filename, path| path =~ /app\/assets/ && !%w(.js .css).include?(File.extname(filename)) }, /application.(css|js)$/ ]

如果要包含其他manifests或单个stylesheetsJavaScript个文件,可以将它们添加到config/initializers/assets.rb中的预编译数组中:

Rails.application.config.assets.precompile += %w( foo.js foo.css )

因此,这告诉rails在生产模式下预编译您的manifest文件。这就是你的错误所说的在assets.rb中添加它并重新启动服务器。