如何在运行时从公用文件夹编译scss

时间:2017-11-24 16:17:52

标签: ruby-on-rails sprockets

为了从公共目录中的主题文件夹编译额外的css资产,我将以下内容添加到assets.rb(rails 5.1)

#assets.rb
Rails.application.config.assets.paths << Rails.root.join("public", "themes", "default")

在视图(haml)中也位于公共目录中我有这个包括:

# public/layouts/default.html.haml
%link{:href => "/themes/default/sdk.css", :rel => "stylesheet"}/

sdk.css

/*
 *= require self
 *= require bootstrap/bootstrap
 */

令人惊讶的是这个scss文件没有被编译。浏览器中的输出完全相同:

/*
 *= require self
 *= require bootstrap/bootstrap
 */

另一个尝试是使用style_sheet助手:

 = stylesheet_link_tag 'sdk.scss'

该文件正在提供,但未编译。

那么如何在运行时编译scss资源呢?

2 个答案:

答案 0 :(得分:0)

我从你所包含的代码中注意到两件事:

  1. 您的文件不是.scss文件(它是.css文件),因此无需编译。
  2. 您的链接正在/themes/default/sdk.css路径中查找,但您已将/public/themes/default/sdk.css指定为css文件所在的位置。因此,您的路径似乎不正确,这将导致您的css文件无法加载。

答案 1 :(得分:0)

最后,我自己拿着一个来自rails的帮手

 = stylesheet_link_tag 'sdk'

有人能告诉我为什么相对包含在这种情况下不起作用吗?

%link{:href => "/themes/default/sdk.scss", :rel => "stylesheet"}/