2011-10-30 115 views
0

我们有3点可能的选择:资产管道:服务于资源具体SCSS文件

  • 用户在
  • 用户身份登录的管理员

由于我们的用户签订

  • 用户没有签名面积明显较重(按照CSS),我想让没有登录的人加载代码。

    是否可以将我的css.scss更改为css.scss.erb &然后添加一些帮助?例如:

    Application.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个不同的文件吗?

  • 回答

    1

    我不认为这会工作得很好。您的所有资产都将在生产中预先编译好,以便您的ERB不会执行您期望的操作。你的资产中的任何ERB只需要是“环境级别”,因此我的意思是指那些不依赖于当前请求状态的路径。您可以使用多个样式表:

    • 一个涵盖所有常见的东西。
    • 一个包含登录用户的东西(但内容不能取决于哪个用户登录)。
    • 一个用于管理员用户(但同样,内容不能取决于哪个用户登录)。

    然后在视图中包含适当的样式表。

    如果由于某种原因您需要每个用户的CSS,那么您必须在视图中使用<style>元素并将其内联或通过控制器提供CSS,以便可以在每个请求的基础上可靠地对其进行自定义。

    +0

    好的,谢谢。这也是我刚刚提出的。只是想知道什么是聪明的,但你在预编译时是正确的!谢谢! –