I did something similar a couple months ago. Instead of taking the route you did, I made a custom template handler and registered it.
http://pastie.caboo.se/77659 You'll probably want to page-cache the result if at all possible. Sass isn't optimized for speed. Sean Eeby wrote: > I am trying to work out a good way to have dynamic CSS. I like Sass, > so I tried to work that in too. I'm looking for comments for > improvement to what I came up with. > > Any constructive criticism would be appreciated. > > Thanks, > > E > aeondust.com > > ------------------------------------ > > First put Sass code into an Erb file: > > public/stylesheets/styles_sass.erb > > Your Sass code can be interspersed with variables, e.g., > > h1, h2, h3, h4, h5, h6 > margin: 6px 0 > padding: 0 > color: <%= header_color %> > > Or anything else you can put in an Erb or RHMTL file. > > Then create a controller to serve the CSS data: > > require 'erb' > > class CssController < ApplicationController > > layout nil > session :off > > def index > > # Get the path to the Erb file. > sass_erb_file = > File.join(File.expand_path(File.dirname(__FILE__)), > '..', > '..', > 'public', > 'stylesheets', > 'styles_sass.erb') > > # Read in the Erb file > sass_code = open(sass_erb_file) { |f| f.read } > > # Erb tempate object > erb_template = ERB.new sass_code > > # Set some vars. Here you would probably do something more useful > # like get data from the DB > header_color = '#BE0D45' > navbar_bgcolor = '#F2D0A5' > left_col_bgcolor = '#ccc' > right_col_bgcolor = '#ccc' > > # Get the output of the template > sass_processed = erb_template.result(binding) > > # Put the resulting Sass code through the Sass engine to produce > CSS > engine = Sass::Engine.new(sass_processed) > css = engine.render > > # Return the CSS > render :text => css, :content_type => "text/css" > > end > end > > In your views, link to the CSS data like this: > > <link href='/css' rel='Stylesheet' type='text/css' /> > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Haml" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/haml?hl=en -~----------~----~----~----~------~----~------~--~---
