在资产管道中加载多个应用程序样式表



我的应用程序中有几个特定于公司主题的样式表,并且根据登录用户加载了特定的样式表。这是通过在"application.html.erb"中加载特定版本的应用程序文件来完成的:

<% if current_user %>
    <% stylesheet_link_tag "application_" + current_user.company.code.downcase %>   
<% else %>
    <%= stylesheet_link_tag "application" %>
<% end %>

这在本地工作正常,但在生产环境中(在"耙子资产:预编译"之后),它不起作用,因为似乎只有原始的"应用程序.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";

有没有更好的方法?谢谢!

尝试在 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版本。

最新更新