我是红宝石和铁路新手,所以请耐心等待。

我在rails中有一个SASS文件(stats.css.scss),该文件已正确加载到我的开发环境中,但没有加载到我的生产环境中。我知道是造成这种情况的资产管道,但已经进行了几次尝试,但无法弄清楚出了什么问题。这是我得到的:

在我的site / app / assets / stylesheet文件夹中,我有stats.css.scss文件

index.html.erb文件正在加载SASS文件,如下所示:

<%= stylesheet_link_tag "stats", media: "all" %>


当我检查开发环境中加载的页面的源代码(在Google chrome中为Ctrl + U)时,我看到了

<link href="/assets/stats.css?body=1" media="all" rel="stylesheet" />


这是我所期望的,因为它看起来确实像资产管道中包含的JS。但是在生产环境中,源代码显示了这一点

<link href="/stylesheets/stats.css" media="all" rel="stylesheet" />


任何人都可以帮助我弄清楚我想念的是什么?谢谢!

最佳答案

建议:不要在生产中编译资产。这是没有必要的,并且容易出现问题。



既然您没有提到它,我猜您没有在预编译配置中添加stats.css。将以下内容添加到config/application.rb

config.assets.precompile += %w( stats.css )


现在,Rails Guide建议在config/initializers/assets.rb中这样做

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


为什么这是必要的?从指南:


  编译文件的默认匹配器包括application / assets文件夹(包括gems)中的application.js,application.css和所有非JS / CSS文件(这将自动包括所有图像资产):

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



换句话说,如果您希望随时对stats.css.scss进行预编译,则需要明确告知Sprockets这样做。

10-05 20:31
查看更多