2011-09-16 15 views
5

Rails 3.1.0プロジェクトでは、background_colorやlink_colorなどのカスタマイズ可能な属性を持つ会社があります。私はそうのようないくつかのサス変数を設定することができるようにしたい:SassのRailsオブジェクトにアクセスするにはどうすればよいですか?

$background_color: <%= @company.background_color %> 
$link_color: <%= @company.link_color 

... 

@companyがnilであるため、サスは、そのことをやったときにこれは動作しません。ダイナミックな方法でこれを解決するにはどうすればいいのか分かりません(企業の作成や色の変更、ビューの即時更新)。助言がありますか?

+0

サイト/ページごとに1つだけ。 – complex

答えて

0

は、私はあなたがちょうどあなたがそこに持っているもののような何かを行うことができるかもしれないと思うが、私はカップルのアプローチを考えることができます

+0

ああ、私はそれを試して言及すべきだった。それはapplication.css.sass.erbにありますが、ダイスはありません。 – complex

+0

それから私はあなたがコントローラを介して要求を実行しなければならないと思うので、CSSリクエストや何かに応答するコントローラにルーティングするリンクタグを作成してください – Matthew

1

「.css.scss.erb」にファイルの拡張子を変更する必要があります私の頭の上から外してください:

  1. コントローラーであなたのスタイルシートを提供してください。
  2. CSSクラスを使用して、コントローラ、インラインパーシャル、またはCSS @importを使用して色を設定し、CSSだけを提供します。

コントローラを使用してスタイルシートを表示するのはかなり簡単なので、あまり言い表せません。これは少し醜いと厄介かもしれません。 1秒間

、あなたはカップルの余分なCSSクラスを追加したい:その後、カスタムの背景色を使用する必要がある任意の要素は、それらの通常のCSSクラスを必要とcustom-bg

.custom-bg { 
    background-color: some-default-bg; 
} 
.link-fg { 
    color: some-default-fg; 
} 
/*...*/ 

を。他の設定可能な値には同様の偽名が必要になります。カスタマイズされたCSSを提供するには、<style>要素を標準のERB部分を使用してHTMLにインライン化するか、コントローラー(<style src="...">または@importのいずれか)を使用してCSSを提供することができます。だから、あなたのHTMLで古い学校の複数のCSSクラスでSASSyの良さを偽ってしまいます。

JavaScriptもあります。あなたは自分の色を調整してから、このようなもので、それらを直接調整する必要がある要素を識別するためにいくつかの方法が必要になりたい:

$('.need-custom-background').css('background-color', '...'); 
0

このフォローアップするために、私はスタイルシートコントローラを作成しましたが、それはにかなり不自然でしたSassの解析とアセットパイプラインのロードパスがすべて正しく動作するようにします。私はそれをダンプし、スタイルを再編成して、会社の更新時にS3に再生成されてアップロードされる各会社の静的スタイルシートを生成することができました。

関連する問題