En Rails 3.1, usted puede tener sus hojas de estilo pre-procesada por erb.
Ahora digamos que tiene un estilo dinámico llamado dynamic.css.scss.erb
(el .erb
al final es importante!) en app/assets/stylesheets
. Que será procesada por erb (y luego por Sass), y como tal puede contener cosas como
.some_container {
<% favorite_tags do |tag, color| %>
.tag.<%= tag %=> {
background-color: #<%= color %>;
}
<% end %>
}
Puede incluirlo como cualquier hoja de estilo.
¿Qué tan dinámico debería ser?
Tenga en cuenta que solo se procesará una vez, por lo que si los valores cambian, la hoja de estilo no lo hará.
No creo que haya una manera súper eficiente de tenerlo completamente dinámico todavía, pero aún es posible generar el CSS para todas las solicitudes. Con esta advertencia en mente, aquí hay un ayudante para que en 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
Así es como se usa:
En primer lugar, copie el ayudante más arriba en app/helpers/application_helper.rb
.
continuación, se puede incluir en su página de la siguiente manera:
<% content_for :head do %>
<%= style_tag "dynamic.css" %>
<% end %>
The rest of your page.
Asegúrese de que su diseño utiliza el contenido :head
. Por ejemplo, su layout/application.html.erb
podría parecerse a:
...
<HEAD>
....
<%= yield :head %>
</HEAD>
...
descubrí esto gracias a this post.
Tenga en cuenta que si tiene alguna lógica dependiente de la base de datos dentro de su menor cantidad de archivos, no se implementará en Heroku. – Trip