2011-10-30 111 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

    好的,謝謝。這也是我剛剛提出的。只是想知道什麼是聰明的,但你在預編譯時是正確的!謝謝! –