在Rails 4.2中,我希望从使用" Materialise"将视图设置为使用" Material Design Lite"
Materialise样式要求我@import 'materialize';
中有application.scss
,MDL样式要求我在同一个文件中包含@import 'material';
。
我的问题是,当我导入Materialize样式时,它会破坏MDL样式。如果我删除了Materialize import语句,MDL样式可以正常工作,但任何我没有转换为MDL样式的页面都会完全没有样式。
它是一个太大的应用程序,无法一次性过渡到MDL。我希望有一些页面用MDL设置样式,而其他页面在过渡过程中使用Materialize设置样式。
有没有办法让application.scss
中的import语句以用户正在查看的页面为条件?
答案 0 :(得分:0)
我从while($result = $statement->fetch(PDO::FETCH_ASSOC, N))
删除了materialize import语句,然后在application.scss
内设置了条件,它根据当前路径设置了一个标志。如果当前路径是已转换为MDL的路径,则它将views/layouts/application.html.erb
标志设置为true。 (目前只转换登录页面。)
mdl
然后在页面头部我导入Materialize css和js到CDN,除非页面使用MDL
<%
if current_page?(login_path)
mdl = true
else
mdl = false
end
%>
我认为这样做的后果就是Materialise不再存在于资产管道中,这可能会使事情变慢一些,直到转换完成为止。
我现在还有两个标题栏的部分,我根据<% 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 %>
标志呈现正确的部分。