我的应用程序中有几个公司主题特定样式表,并根据登录用户加载特定样式表。这是通过在'application.html.erb'中加载特定版本的应用程序文件来完成的:
<% if current_user %>
<% stylesheet_link_tag "application_" + current_user.company.code.downcase %>
<% else %>
<%= stylesheet_link_tag "application" %>
<% end %>
Ths在本地工作正常,但在生产时(在“rake资产:预编译”之后),它不起作用,因为它似乎只编译原始的'application.css.scss',而不是其他的,例如'application_sal.css.scss'。我在这里做错了什么?
这是要走的路吗?当用户登录时,加载了特定的应用程序文件,其中包含公司特定的样式表:
@import "_variables.css.scss";
@import "_mixins.css.scss";
@import "_reset.css.scss";
@import "_layout.css.scss";
@import "_skeleton.css.scss";
@import "_theme_sal.css.scss";
@import "_form.css.scss";
@import "base.css.scss";
@import "print.css.scss";
@import "_modules.css.scss";
当用户未登录时,将加载默认的应用程序文件:
@import "_variables.css.scss";
@import "_mixins.css.scss";
@import "_reset.css.scss";
@import "_layout.css.scss";
@import "_skeleton.css.scss";
@import "_form.css.scss";
@import "base.css.scss";
@import "print.css.scss";
@import "_modules.css.scss";
有更好的方法吗?谢谢!
答案 0 :(得分:2)
尝试更新environments/production.rb
中的预编译配置项。虽然application.css
是自动预编译的,但其他人不会没有此配置项。
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
config.assets.precompile += %w( search.css )
只需将每个公司特定的css清单文件放在数组中。
此配置项可能已在production.rb
注释掉,具体取决于您在rails new
下运行的Rails版本。