Mögliche stylesheet.css.erb in Rails zu benutzen?
-
20-09-2019 - |
Frage
Hallo, ich bin neu in Rails und Ruby im Allgemeinen. Ich habe mich gefragt, ob es möglich ist eine eingebettete Ruby-CSS-Datei (css.erb), ähnlich wie mit html.erb Dateien für Ansichten zu verwenden.
Zum Beispiel verwende ich
<%= stylesheet_link_tag "main" %>
In dem Link zu meiner main.css Datei in der Öffentlichkeit / Stylesheets, aber wenn ich die Erweiterungsdatei ändern von main.css zu main.css.erb, es nicht mehr macht die CSS ..
Ist dies überhaupt möglich, oder gibt es einen besseren Weg?
Lösung
nicht, den ich glaube. Was ist Ihre Absicht - Variablen zu verwenden und sie zur Laufzeit oder „Übersetzen“ ausgewertet werden (was bedeutet, wie deploy Zeit?). Auch, was wäre die ERB-Bindung? Wäre es bindet an die Steuerung, wie Ansichten und Helfer sind, so dass ERB Instanz Zugriff auf die Instanzvariablen in der Steuerung haben würde? Ich stelle gerade diese Frage eher als theoretische Übung.
Wenn Sie Variablen in Ihrem CSS verwenden möchten, als Sie Haml die SASS verwenden können. Sie brauchen nicht den Zugang zu dem Anwendungsbereich des Controller erhalten, aber Sie Basisvariablen und Looping tun bekommen. Plus andere coole Sachen wie Mixins.
Andere Tipps
Durch die Zeit, diese Frage beantwortet wurde, gibt es in der Tat keine Möglichkeit Gebrauch .css.erb
Dateien in Schienen richtig.
Aber die neuen Schienen 3.1 Asset-Pipeline ermöglicht Asset Helfer in Ihrer CSS-Datei zu verwenden. Der CSS-Parser ist kein Controller / Aktion Umfang binded, aber der Rubin-Parser ist nun in der Lage, einige Probleme wie Bildpfad Referenzen
zu lösen.class { background-image: url(<%= asset_path 'image.png' %>) }
oder einbetten ein Bild direkt in Ihr CSS
#logo { background: url(<%= asset_data_uri 'logo.png' %>) }
Sie können auch ein "Stylesheets" Controller
erzeugen./script/generate controller stylesheets main admin maintenance
Sie erhalten etwas wie folgt aus:
exists app/controllers/
exists app/helpers/
create app/views/stylesheets
exists test/functional/
exists test/unit/helpers/
create app/controllers/stylesheets_controller.rb
create test/functional/stylesheets_controller_test.rb
create app/helpers/stylesheets_helper.rb
create test/unit/helpers/stylesheets_helper_test.rb
create app/views/stylesheets/main.html.erb
create app/views/stylesheets/admin.html.erb
create app/views/stylesheets/maintenance.html.erb
Und Sie können später verwenden, um die app / views / Sheets / Dateien als CSS-Dateien dynamisch generiert.
Die gleiche Methode funktioniert für JavaScript-Dateien (Javascripts Controller)