レールアプリでダイナミックCSSを処理する際の問題を研究しています。アプリ内では、個々のユーザーやユーザーのグループが、CSSを使用してカスタマイズされたルックアンドフィールを持つことができます。固定された数の「ルック・アンド・フィールズ」やCSSファイルはなく、ユーザ数やグループ数が増えるにつれて数字が大きくなり、アプリケーションの管理インターフェースを介してユーザがルック・アンド・フィールを定義します。典型的な日中、数千(数万ではありません)の異なる種類のCSSが提供されます。アプリはmongodbにあらかじめ構築されたCSSを保存するので、すべての要求に対してCSSを作成する代償を支払う必要はありません。この動的なCSSコンテンツをどのように提供するのが最善の方法でしょうか?私はerbやsassを使っている[この1] [1]のような他の質問を見たことがありますが、これらの回答のいくつかは数年前ですので、Rails 3の方が良い答えがないか確かめたいと思っていました。レールアプリでダイナミックCSSを処理する最良の方法
答えて
これはあなたにいくつかのアイデアを与えるかもしれない:Multiple robots.txt for subdomains in rails
説明なしでは、これはまったく「答え」ではありませんが、それは大きな貢献です。 –
あなたは、リソースとして、あなたのCSSファイルを扱うデータベースに保存して、あなたは一度だけデシベルをヒットする必要があるように、page cachingでそれらを提供することができます CSSが変更されたとき。すべての後のリクエストは、アプリまたはデータベースに触れることなく、キャッシュからWebサーバーによって直接処理されます。
# stylesheet.rb
class Stylesheet < ActiveRecord::Base
validates_presence_of :contents
end
# stylesheets_controller.rb
class StylesheetsController < ApplicationController
caches_page :show # magic happens here
def show
@stylesheet = Stylesheet.find(params[:id])
respond_to do |format|
format.html # regular ERB template
format.css { render :text => @stylesheet.contents, :content_type => "text/css" }
end
end
# the rest is your typical RESTful controller,
# just remember to expire the cache when the stylesheet changes
end
# routes.rb
resources :stylesheets
# layouts/application.html.erb
…
<link href="<%= stylesheet_path(@current_user.stylesheet) %>" rel="stylesheet" type="text/css" />
私はこのアプローチを試みていますが、問題にぶつかっています。私は私のCSSのボディ要素の背景画像を持っていますが、これはCSSが要求されたときに要求されていません。 –
'background:url( '/ assets/image.jpg')' –
を使用すると、私の背景イメージが正しくレンダリングされます。私のブラウザがmy linkタグを次のように解釈するためにstylesheet_path(resource)ルートを埋め込み、 "#{stylesheet_link_tag(stylesheet)} .ss" – dennis
私はこれを数回使っていますが、間違いなくCSSファイルを選択できませんでした。それは多かれ少なかれ同じでなければなりません。
私が多く使ったことの1つは、content_forブロックです。レイアウトを管理するための基本的
<% content_for :css do %> // some css file or css content <% end %>
とレイアウトで
<%= yield :css %>
非常に単純な方法。
私は同様の問題がありましたが、変更されたCSSを一度だけ提供する必要がありました。 2つの定数を1つのモジュール 'Site'に格納します。これをCSSの定数として使うことも、Railsアプリケーション全体の定数として使うこともできます。 Railsアプリケーションが再起動しCSSの入力ファイルが変更されたときにCSSファイルを自動生成します。
あなたは似た何かをするが、参照シンボル名site_settings.rb にして、今度はあなたがダイナミックと呼ばれる、いくつかのダイナミックなスタイリングを持っているとしましょうMongoDBの
http://unixgods.org/~tilo/Ruby/Using_Variables_in_CSS_Files_with_Ruby_on_Rails.html
からユーザーごとにこれらを取得することができ.css.scss.erb(最後の.erbは重要です!)のapp/assets/stylesheetsにあります。これは、ERBによって処理され(そしてサスにより)、その代わりにMongoDBにCSSを記憶するよう
.some_container {
<% favorite_tags do |tag, color| %>
.tag.<%= tag %=> {
background-color: #<%= color %>;
}
<% end %>
}
- 1. CSSを整理する最良の方法は何ですか?
- 2. Zend Frameworkでレコードフォームを処理する最良の方法
- 3. Cでバルクメールを処理する最良の方法
- 4. アンドロイドでランタイムアクセス許可を処理する最良の方法
- 5. AsyncControllerでタイムアウトを処理する最良の方法
- 6. ドキュメントアプリケーションで多言語を処理する最良の方法
- 7. WCFで巨大なリクエストを処理する最良の方法
- 8. ReactJSでnull値を処理する最も良い方法は?
- 9. Magento - フォームをブロックで処理する最も良い方法は?
- 10. Scalaのループスタイルのプログラムを処理する最良の方法
- 11. エンティティフレームワークとの並行性を処理する最良の方法
- 12. Symfony2の大きなフォームコレクションを処理する最良の方法
- 13. PDOクエリの例外を処理する最良の方法
- 14. 'this'の変更を処理する最良の方法
- 15. 多くの受信パケットを処理する最良の方法
- 16. フラスコのPOSTユニットテストを処理する最良の方法
- 17. Braintreeのタイムアウトを処理する最良の方法
- 18. テーブルの更新を処理する最良の方法
- 19. テキストボックスの時間検証を処理する最良の方法
- 20. .Netの電子メールリストを処理する最良の方法
- 21. Djangoの要求変数を処理する最良の方法
- 22. JavaのSetを反復処理する最良の方法
- 23. レールアプリの時間入力を処理する方法
- 24. api.aiの範囲を処理する最も良い方法は?
- 25. 同期呼び出しを処理する最良の方法
- 26. 条件文を処理する最良の方法
- 27. twitterをソートして処理する最良の方法 - Twitter API
- 28. ZeroDivisonErrorを処理する最良の方法は?
- 29. バッファアンダーランを処理する最良の方法は?
- 30. リアルタイムクロックを処理する最良の方法は?
ようなものを含むことができ、なぜディスク上のCSSファイルに格納しないであろうユーザーのIDに結びついたファイル名を持つパブリックディレクトリ内にありますか?そうすれば、あなたは通常(CSSの頭にリンクタグを使って)CSSを提供し、ブラウザのキャッシュを利用することができます。変更が行われるたびに、キャッシュをクリアして編集時ベースのキャッシュバスターをリンクタグsrcに追加することができます。 –