Dans Rails 3.1, vous pouvez avoir votre feuille de style pré-traitées par Erb.
Maintenant, disons que vous avez un style dynamique appelé dynamic.css.scss.erb
(le .erb
à la fin est important!) dans app/assets/stylesheets
. Il sera traité par Erb (puis par Sass), et en tant que telle peut contenir des choses comme
.some_container {
<% favorite_tags do |tag, color| %>
.tag.<%= tag %=> {
background-color: #<%= color %>;
}
<% end %>
}
Vous pouvez l'inclure comme une feuille de style.
Quelle devrait être la dynamique?
Notez que cela ne sera traité qu'une seule fois, donc, si les valeurs changent, la feuille de style ne le fera pas.
Je ne pense pas qu'il existe un moyen super efficace pour le rendre complètement dynamique, mais il est toujours possible de générer le CSS pour toutes les demandes. Avec cette mise en garde à l'esprit, voici une aide pour que 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
Voici comment l'utiliser:
D'abord, copiez l'assistant ci-dessus dans app/helpers/application_helper.rb
.
Vous pouvez alors l'inclure dans votre page comme suit:
<% content_for :head do %>
<%= style_tag "dynamic.css" %>
<% end %>
The rest of your page.
Assurez-vous que votre mise en page utilise le contenu :head
. Par exemple, votre layout/application.html.erb
pourrait ressembler à:
...
<HEAD>
....
<%= yield :head %>
</HEAD>
...
J'ai trouvé ce grâce à this post.
Notez que si vous avez une logique dépendante de la base de données dans votre fichier less, elle ne sera pas déployée sur Heroku. – Trip