2012-03-27 16 views
6

Tengo un sitio con clientes. Cada cliente puede tener su propio tema y cuando un usuario de un determinado cliente está conectado, el tema de la empresa debe estar cargado. En el application.css.scss tengo una línea como esta para cada empresa:carga condicional de la hoja de estilos

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

¿Cómo puedo cargar sólo, por ejemplo, theme_x cuando un usuario de la empresa x está conectado y no carga theme_y y theme_z? ¿O hay una mejor manera de hacer esto? ¡Gracias!

Respuesta

7

Si los temas son grandes, es posible que desee separarlos de la aplicación on.css y cargarlos condicionalmente en su diseño. Por ejemplo, si usted tiene un ayudante theme_stylesheet en application_helper que devuelve el nombre del tema que el cliente está utilizando:

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

Si son pequeños, me gusta los espacios de nombre. Deje su application.css tal como está, pero modifique los temas para usar una regla de nivel superior en el cuerpo. Coloque una etiqueta en el cuerpo para seleccionar el tema. La belleza de esto es que puedes cambiar dinámicamente el tema.

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

_theme_x.css.scss

body.theme-x { 
    ... 
} 
3

que puede hacerlo de esta manera, como se puede comprobar primero cuyo cliente es ingresar y aplicar un poco de diseño

para él y para incluir archivos CSS diffrent para la disposición diversa.

Como yo ¡

primero I logren método en el ayudante de la aplicación pero puedo poner en práctica la disposición según roles de usuario que

puede hacer de acuerdo clientes.

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

Y en Controlador de llamada en filtro antes de que el diseño será poner en práctica en función del usuario

papeles

class AdministratorController < ApplicationController 

    include ApplicationHelper 
    layout :choose_layout 

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

end 

final

esperan que usted podría tener la idea ....

Cuestiones relacionadas