3

我希望能够有一个调用视图文件my.css.erb.scss,在其中ERB处理然后SCSS编译。

例如这个文件:

h1 { color: <%= 'red' %>; }

会导致:

h1 { color: red; }

目前我发现唯一可行的解​​决方案是有点软糖,我不喜欢它(并且在规范中证明很难通过这种方法渲染):

lib/renders.rb

ActionController.add_renderer :css do |template,options|
    string = render_to_string template, options
    css = Sass::Engine.new(string, :syntax => :scss).render
    self.content_type ||= Mime::CSS
    self.response_body = css
end

然后在控制器中我需要这样做:

respond_to do |format|
    format.css { render :css => params[:action] }
end

我尝试通过ActionView::Template::Handler模块方法使用.call方法添加注册渲染器,但当时我无法获得ERB渲染。

4

0 回答 0