2012-01-18 2 views
2

私は、データベースの情報に基づいてスタイルシートを生成する状況があります。これは、私のようなコードが含まビュー/ユーザー/ show.css.erb持つ意味:| fをRails 3でビューのテンプレートハンドラとしてSASSを使用するには?

a { 
    color: <%= @user.favorite_color %>; 
} 

respond_to {で完璧に動作し、十分なフェア| f.css}を使用してください。しかし、今では私のCSSでlighten、darkenなどのSASSの粋な機能のいくつかを使用したいので、私はSASSに私の見解を解析させたいと思っています。しかし、私はあまりにも醜いハックをせずに私のビューでテンプレートハンドラとしてSASSを登録する方法を把握することはできません。私はちょうどそれがどのように機能するかは分かりません。誰もこれを試したことがありますか?

私はSASSの機能モジュールを含めてみましたが、役に立たなかった。

+1

最後に、 'foo.css.erb'ビューとこのコードブロックで固定しました。 respond_to do | format | レンダリングん format.css:テキスト=>サス:: Engine.new(render_to_string、構文は:SCSS、キャッシュ:偽).render 終了 エンド キャッシュは通常のページのキャッシュで処理されます。 – Martijn

+0

私はMartijnに似たようなことをしました。しかし、スプロケットのコンテキストを含めて、すべての資産パイプラインのグッズを入手できるようにする必要がありますが、http://stackoverflow.com/a/35059922/148410 –

答えて

2

私は以前、ダイナミックユーザーテーマで同じことを計画していました。当時、私はストレートと狭い上で私を帰っネイサンWeizenbaum(SASSの著者)によって、あなたに似た質問にmailing list answerが見つかりました:

は3月18日、午前11時46分には、ネイサンWeizenbaumは書きました//haml.hamptoncatlin.com/docs/rdoc/files/FAQ.htmlfor 簡単な説明: - : サスセクションofhttpを参照してください

サスは、Railsのコードへの動的アクセスを許可しない理由があります。一度コンパイルされているので、Sassはかなり遅いです。 これはおそらく、実稼働環境では非常に遅いです。 、あなたは本当に、本当にそれぞれの要求に応じてサスをコンパイルする必要がある場合は

リンクはもう機能していないが、SASSよくある質問はダイナミック質問に答えるCan I use a variable from my controller in my Sass file?と呼ばれる唯一のセクションを持っていますまず適切なキャッシングが設定されていることを確認してください。次に、Sass :: Engineを使用してコードをレンダリングし、:customオプションを使用してSass関数からアクセスできるデータを渡すことができます。

一般に、SASSは、各リクエストで動的CSS生成用に設計されていません。代わりに、静的CSSファイルを生成するための事前コンパイルソリューションとして使用することを意図しています。

+0

ありがとうございます。私はSassが比較的遅く、出力をキャッシュすることを間違いなく計画していたことを認識しています。私はこれをSass :: Engineを使って動作させると思います。 – Martijn

関連する問題