Rails 3.0では、CSSスタイルシートを表現する 'Site'モデルにpaperclipにファイルを添付しました。アプリケーションの中には、それぞれsite.color1やsite.color 2のようなサイトの属性を毎回生成するスタイルシートを持つたくさんのサイトがあります。 はその後、我々は$のカラー1のような変数を使用しています.sassファイルを持っており、これらは正しいCSSファイルを生成し、クリップRails 3.1 ActiveRecord Modelオブジェクトにアタッチされたスタイルシートを生成する
でそれをアップロードすると解釈されている。ここ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
問題の権利は、これらのスタイルシートが作成されているときにimage-pathのようなサスヘルパーを認識していないことです。私はこれのための回避策を見つけることができませんでした。カスタムSass関数がモジュール(Sass :: Script :: Functionsモジュール)で定義されていますが、ヘルパーもそこでは動作しません。また、image_pathメソッドを使用する方法を理解できません。ActionView :: Helpers、私はそのモジュールを幸運のない機能モジュールに含めようとしましたが、
誰もがこれについて何か提案がありますか?