我希望能够有一个调用视图文件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
渲染。