【问题标题】:Rails 5 Asset NamingRails 5 资产命名
【发布时间】:2016-11-28 12:55:26
【问题描述】:

为什么我的主 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 导入

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

使用 'foo.scss' 时出错

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

如果我使用文件名“application.scss”,它就可以正常工作。

【问题讨论】:

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


    【解决方案1】:

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

    [ 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 并重新启动服务器。

    【讨论】:

      猜你喜欢
      • 2017-05-21
      • 1970-01-01
      • 2017-07-07
      • 2016-08-09
      • 1970-01-01
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多