我們以前在Rails 3.0中做的事情是用paperclip將一個文件附加到代表css樣式表的我們的「網站」模型中。我們在應用程序中有大量網站,每個網站都有一個樣式表,每次在網站中的屬性都會生成樣式表,如site.color1或site.color 2更改。 然後我們有一個使用的變量,比如$ COLOR1一個.sass文件,這些解釋生成正確的CSS文件,並用曲別針把它上傳Rails 3.1生成附加到ActiveRecord模型對象的樣式表
這裏的Site.rb(模型)的相關部分:
has_attached_file :stylesheet, PAPERCLIP_OPTIONS
def generate_site_specific_stylesheet(force = false)
if use_custom_stylesheet && (force || color_changed?)
stylesheets_path = Rails.root + 'app/assets/stylesheets'
template = File.read(stylesheets_path + '_site_specific_stylesheet.sass')
sass_engine = Sass::Engine.new(template, :load_paths =>[stylesheets_path.to_s, '.'],
:template_location => stylesheets_path.to_s, :custom => {:site => self})
stylesheet_contents = sass_engine.render
puts stylesheet_contents
self.stylesheet = StringIO.new stylesheet_contents
self.stylesheet.instance_write(:file_name, 'site_stylesheet.css')
self.stylesheet.instance_write(:content_type, 'text/css')
end
true
end
問題的關鍵是,當這些樣式表被創建時,他們不會識別像鏡像路徑這樣的sass助手。我一直無法找到解決方法。我們確實在模塊(模塊Sass :: Script :: Functions)中定義了自定義sass函數,但助手不能在那裏工作,我無法弄清楚如何在包含ActionView :: Helpers中使用image_path方法,儘管我已經試過將這個模塊包含到我的sass功能模塊中,但沒有運氣。
有人對此有什麼建議嗎?