In Rails 3.1, können Sie Ihre Stylesheets vorverarbeitet von erb haben können.
des Nun lassen Sie sagen, Sie haben einige dynamische Styling dynamic.css.scss.erb
genannt (die .erb
am Ende ist wichtig!) in app/assets/stylesheets
. Es wird von erb verarbeitet werden (und dann von Sass), und als solche Sachen wie
.some_container {
<% favorite_tags do |tag, color| %>
.tag.<%= tag %=> {
background-color: #<%= color %>;
}
<% end %>
}
Sie können es umfassen wie jedes Sheet enthalten.
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 Möglichkeit gibt, es komplett dynamisch zu machen, aber es ist immer noch möglich, das CSS für alle Anfragen zu generieren. Mit dieser Einschränkung in den Sinn kommt, hier ein Helfer für die in Rails 3.1:
def style_tag(stylesheet)
asset = YourApplication::Application.assets[stylesheet]
clone = asset.class.new(asset.environment, asset.logical_path, asset.pathname, {})
content_tag("STYLE", clone.body.html_safe, type:"text/css")
end
Hier ist, wie es zu benutzen:
zuerst die oben Helfer in app/helpers/application_helper.rb
kopieren.
Sie können dann fügen ihn in Ihre Seite wie folgt:
<% content_for :head do %>
<%= style_tag "dynamic.css" %>
<% end %>
The rest of your page.
Stellen Sie sicher, dass Ihr Layout den Inhalt :head
verwendet. Zum Beispiel könnte Ihre layout/application.html.erb
wie folgt aussehen:
...
<HEAD>
....
<%= yield :head %>
</HEAD>
...
ich dies aus durch this post gefunden.
Beachten Sie, dass wenn Sie eine Datenbank-abhängige Logik in Ihrer less-Datei haben, diese nicht in Heroku bereitgestellt wird. – Trip