2017-11-24 2 views
0

Um zusätzliche CSS-Assets SCSS zur Laufzeit kompilieren von Theme-Ordnern innerhalb des öffentlichen Verzeichnisses zu kompilieren habe ich folgende assets.rb (Schienen 5,1)Wie aus dem öffentlichen Ordner

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

in einer Ansicht (haml), die auch im öffentlichen Verzeichnis befindet ich das haben, gehören:

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

die sdk.css

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

Überraschenderweise wird diese scss-Datei nicht kompiliert. Die Ausgabe im Browser ist genau das gleiche:

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

Ein weiterer Versuch, die STYLE_SHEET Helfer wie dies wurde mit:

= stylesheet_link_tag 'sdk.scss' 

Die Datei serviert bekommen, aber nicht kompiliert.

Also, wie kann ich scss Assets zur Laufzeit kompilieren?

Antwort

0

Zwei Dinge, die ich aus dem Code bemerkt, dass Sie enthalten:

  1. Ihre Datei nicht .scss Datei ist (es ist eine CSS-Datei), so dass keine Kompilierung erforderlich ist.
  2. Ihr Link sucht im Pfad /themes/default/sdk.css, aber Sie haben /public/themes/default/sdk.css als Speicherort für die CSS-Datei angegeben. Daher scheint Ihr Pfad falsch zu sein, was dazu führen würde, dass Ihre CSS-Datei nicht geladen wird.
+0

das Umbenennen in scss verursacht einen 404 http: // localhost: 3000/themes/default/sdk.css. Ich kann es als http: // localhost: 3000/themes/default/sdk.scss laden, aber es wird auch nicht kompiliert. Ich verbanne den öffentlichen Ordner, da es für Assets im öffentlichen Ordner nicht benötigt wird, oder? Wenn ich es vorstelle, wieder ein 404 – dc10

0

Endlich habe ich es selbst mit einem Helfer von Schienen

= stylesheet_link_tag 'sdk' 

Kann mir jemand sagen, warum die relativen umfasst in diesem Fall nicht funktioniert?

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