2017-03-03 36 views
0

在Rails 4.2我想使用「物化」的風格的意見,使用「材料設計精簡版」過渡Rails中如何更改是基於URL是什麼風格的進口

的Materialise的風格需要我有@import 'materialize';application.scss和MDL樣式要求我有@import 'material';在同一個文件中。

我的問題是,當我導入Materialise樣式時,它打破了MDL的樣式。如果我刪除Materialize import語句,則MDL樣式可以工作,但是我沒有轉換爲MDL樣式的任何頁面都是完全沒有樣式的。

這是一個過大的應用程序,一次過渡到MDL。我希望在轉換過程中使用MDL設置一些頁面樣式,而其他頁面使用Materialize設置樣式。

是否有任何方式使application.scss中的導入聲明有條件在用戶正在查看的頁面上?

回答

0

我從application.scss中刪除了物化導入語句,然後我在views/layouts/application.html.erb內部設置了條件,它根據當前路徑設置了一個標記。如果當前路徑是已經轉換爲MDL的路徑,那麼它將mdl標誌設置爲true。 (目前,只有登錄頁面被轉換。)

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

然後在頁面頭部我導入Materialise的CSS和JS通過CDN,除非該頁面使用MDL

<% 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 %> 

我想這樣做的後果將會是Materialise不再處於資產管道中,這可能會讓事情變得緩慢,直到完成轉換。

我現在也有兩個部分的標題欄,我根據mdl標誌渲染正確的標題。