Was ist die beste / effizienteste Methode zum Erstellen dynamischer CSS mit Rails? Ich entwickle einen Admin-Bereich auf einer Website, wo ich möchte, dass ein Benutzer in der Lage ist, den Stil ihrer Profile anzupassen (meist Farbe), die ebenfalls gespeichert werden.
Würden Sie einfach Ruby-Skript in die CSS-Datei einbetten? Müsstest du die Dateierweiterung von CSS ändern?
Danke.
Gegenwärtig gibt es viele Möglichkeiten, dynamische CSS in Schienen zu generieren.
Sie können less css verwenden - ist eine Erweiterung für CSS mit zusätzlichen Funktionen.
Gem Less css for rails bietet die Integration für Rails-Projekte mit der Stylesheet Less in Asset-Pipeline .
Wenn Sie Twitter Bootstrap verwenden, können Sie dies less rails bootstrap überprüfen.
Sie können auch eine weitere CSS-Erweiterungssprache Sass zum Generieren von CSS verwenden. Hier ist ein Saas Schienen Juwel .
Sehen Sie sich Dynamic CSS in Rails und Render Rails Assets zum String Blogposts und Artikel über Asset-Pipeline
Verwandte SO
Fragen:
In Rails 3.1 können Sie Ihre Stylesheets von erb vorverarbeiten lassen.
Nehmen wir an, Sie haben ein dynamisches Styling namens dynamic.css.scss.erb
(das .erb
am Ende ist wichtig!) in app/assets/stylesheets
. Es wird von erb (und dann von Sass) verarbeitet und kann so etwas wie
Sie können es wie jedes Stylesheet einfügen.
Beachten Sie, dass es nur einmal verarbeitet wird. Wenn sich die Werte ändern, wird das Stylesheet nicht ausgeführt.
Ich glaube nicht, dass es eine super effiziente Methode gibt, um es komplett dynamisch zu machen, aber es ist immer noch möglich, das CSS für alle Anfragen zu generieren. Mit diesem Vorbehalt ist hier ein Helfer dafür in Rails 3.1:
%Vor%So verwenden Sie es:
Kopieren Sie zuerst den obigen Helper in app/helpers/application_helper.rb
.
Sie können es dann wie folgt in Ihre Seite einfügen:
%Vor% Stellen Sie sicher, dass Ihr Layout den Inhalt :head
verwendet. Zum Beispiel könnte Ihr layout/application.html.erb
wie folgt aussehen:
Ich habe das dank diesem Beitrag .
Sie können ERB mit CSS verwenden, Sie müssen nur CSS im Controller rendern. Für solch eine stark angeforderte Ressource empfehle ich jedoch nicht, dies jedes Mal zu generieren. Ich würde das Stylesheet des Benutzers in memcached oder redis speichern und von ihm beim Laden der Seite abrufen, anstatt die Datei jedes Mal neu zu rendern. Wenn sie ihren Stil aktualisieren, können Sie den Cache ablaufen lassen, stellen Sie einfach sicher, dass er neu erstellt wird, wenn die Seite gerendert wird.
Ich habe das gerade für eine andere Seite gebaut. Ich habe eine Controlleraktion und eine Ansicht, die Farbwerte aus der Datenbank abruft und anschließend ein angepasstes CSS basierend auf dem aktuellen Benutzerkonto rendert. Zur Optimierung verwende ich das integrierte Rails-Caching, das eine Kopie auf dem Datenträger speichert und als statisches Asset bereitstellt. Schön und schnell.
Hier ist ein Beispiel aus dem ERB-Code
%Vor%Tags und Links css ruby-on-rails dynamic-css