2012-03-27 16 views
6

私はクライアントを持つサイトを持っています。すべてのクライアントは独自のテーマを持つことができ、特定のクライアントのユーザーがログインすると、会社のテーマを読み込む必要があります。 application.css.scssでは、私はすべての企業のために、このような行があります:スタイルシートの条件付き読み込み

@import "_theme_x.css.scss"; 
@import "_theme_y.css.scss"; 
@import "_theme_z.css.scss"; 

私は、例えば読み込むことができますどのようにtheme_xとtheme_zをロードしていないときに、xのユーザがログインしているときのtheme_x?または、これを行うためのより良い方法がありますか?ありがとう!

答えて

7

テーマが大きい場合は、テーマから分離することができますレイアウトに条件付きでロードします。たとえば、クライアントが使用しているテーマの名前を返しますapplication_helperでヘルパーtheme_stylesheet持っている場合:彼らが小さい場合

# application.html.erb 
<%= stylesheet_link_tag 'application', theme_stylesheet %> 

を、私は名前空間が好きです。 application.cssはそのままの状態にしますが、本体のトップレベルのルールを使用するようにテーマを変更してください。テーマを選択するには、本文にタグを配置します。これの美しさは、テーマを動的に変更できることです。

<body class="theme-<%= theme_stylesheet %>"> 
    ... 
</body> 

_theme_x.css.scss

body.theme-x { 
    ... 
} 
3

あなたが最初にそのクライアントのログインで、彼のためにいくつかの

レイアウトを適用して、切り抜いたレイアウトの切り抜いたcssファイルを含めるを確認することができますようにあなたは、このようにそれを行うことができます。

私が最初

を行うように私は、アプリケーションのヘルパーに方法を作るが、私はあなたが

クライアントを合わせて行うことができ、ユーザの役割に従ってレイアウトを実装することができます。

def choose_layout 
    if is_admin?(current_user) or is_super_admin?(current_user) 
     'admin' 
    else 
    'application' 
    end 

とコントローラにおけるレイアウトよりも、フィルタの前でそれを呼び出すには、ユーザー

役割

class AdministratorController < ApplicationController 

    include ApplicationHelper 
    layout :choose_layout 

def index 
    @user = User.new 
    @current_user = current_user 

end 

エンド

は、あなたのアイデアを得ることを願っに従って実施されます.... 。

関連する問題