Wie erstelle ich dynamisches CSS in Rails?

8

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.

    
Matt 24.08.2010, 13:29
quelle

5 Antworten

1

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:

Kuncevic 24.08.2010, 13:46
quelle
20

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

enthalten %Vor%

Sie können es wie jedes Stylesheet einfügen.

Wie dynamisch sollte es sein?

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:

%Vor%

Ich habe das dank diesem Beitrag .

    
Marc-André Lafortune 08.12.2011 19:46
quelle
2

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.

    
Preston Marshall 24.08.2010 15:09
quelle
0

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%     
Joshua 24.08.2010 17:18
quelle
0

Diese Lösung definiert einige Konstanten in config / site_settings.rb, die dann in der gesamten Rails-Anwendung verwendet werden können, sowie zum automatischen Generieren der CSS-Dateien, wenn die Rails-App startet und die CSS-Eingabedateien modifiziert wurden / p>

Ссылка

    
Tilo 09.04.2011 08:30
quelle

Tags und Links