我们有3种可能的选择:
由于我们的用户区域非常重(就css而言),我想让未登录的人员加载代码。
是否可以将我的css.scss更改为css.scss.erb&然后添加一些助手?例如:
# include css files for non-logged in users
<% if signed_in? %>
# include css files for logged in users
<% if current_user.try(:staff_role?) %>
# include css files for admin users
<% end %>
<% end %>
这样,我就阻止为用户添加第二个或第三个http请求。有效?
这会如何影响渲染时间? rails会缓存3个不同的文件吗?
答案 0 :(得分:1)
我认为这不会很好。您的所有资产都将在生产中进行预编译,因此您的ERB将无法执行您期望的操作。资产中的任何ERB都只需要是“环境级别”,我指的是路径,而不依赖于当前请求的状态。您可以使用多个样式表:
然后在视图中包含相应的样式表。
如果出于某种原因需要每用户CSS,则必须在视图中使用<style>
元素并将其内联或通过控制器提供CSS,以便您可以在每个用户上自定义它请求基础。