2017-03-03 6 views
0

Dans Rails 4.2 Je veux passer d'utiliser « Matérialiser » de style les vues à l'aide de « Material Design Lite »Rails comment puis-je changer ce que les styles sont importés basé sur l'URL

Les styles Materialise me obligent à J'ai @import 'materialize'; en application.scss et les styles MDL exigent que je possède @import 'material'; dans le même fichier.

Mon problème est que lorsque j'importe les styles Materialize, il casse les styles MDL. Si je supprime l'instruction d'importation Materialize, les styles MDL fonctionnent, mais toutes les pages que je n'ai pas migrées vers les styles MDL sont alors complètement vides.

C'est une application trop grande pour faire la transition vers MDL en une seule fois. Je veux avoir des pages stylisées avec MDL tandis que d'autres sont stylisées avec Materialise pendant le processus de transition.

Est-il possible de faire en sorte que la déclaration d'importation en application.scss dépende de la page affichée par l'utilisateur?

Répondre

0

J'ai supprimé l'instruction d'importation materialize de application.scss puis j'ai défini des conditions à l'intérieur de views/layouts/application.html.erb qui définit un indicateur basé sur le chemin actuel. Si le chemin actuel est celui qui a été transféré vers MDL, il définit l'indicateur mdl comme vrai. (Actuellement, seule la page de connexion est la transition.)

<% 
    if current_page?(login_path) 
    mdl = true 
    else 
    mdl = false 
    end 
%> 

Puis dans la tête de la page I importer le code CSS Materialise et js par CDN à moins que la page utilise LDM

<% unless mdl %> 
    <!-- Compiled and minified CSS and JS for Materialize --> 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/css/materialize.min.css"> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/js/materialize.min.js"></script> 
<% end %> 

Je pense que la conséquence de cette serait que Materialise ne soit plus dans le pipeline d'actifs, ce qui peut ralentir un peu jusqu'à ce que la transition soit terminée.

J'ai également maintenant deux partiels pour la barre d'en-tête et je rends la bonne basée sur le drapeau mdl.