1

我們以前在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功能模塊中,但沒有運氣。

有人對此有什麼建議嗎?

回答

0

image-path幫手不隸屬於SASS。這是一種方法,provided我的Rails本身。嘗試在您的模型類中包含以下模塊:

include ActionView::Helpers::AssetTagHelper