我正在研究在Rails應用程序中處理動態CSS的問題。在應用內,個人用戶和/或用戶組可以擁有通過CSS完成的自定義外觀和感覺。不會有任何固定數量的「外觀和感覺」或css文件,這個數字將隨着用戶和組的增長以及用戶通過應用程序的管理界面定義的外觀和感覺而增加。在整個典型的過程中,成千上萬(不是數以萬計的)不同的css變體將被提供。該應用程序會將預建的css存儲在mongodb中,因此它不必爲每個請求都支付構建css的代價,問題更多的是如何提供此動態CSS內容的最佳方式。我見過其他問題,比如[使用erb或sass]的[this] [1],但其中一些答案的日期是幾年,所以我想確保Rails 3沒有更好的答案。在Rails應用程序中處理動態CSS的最佳方法
回答
這可能會給你一些想法:Multiple robots.txt for subdomains in rails
沒有一個解釋,這不是一個'答案'...但它是一個偉大的貢獻。 – 2013-04-19 22:58:04
您可以把你的CSS文件作爲資源,將它們存儲在數據庫中,並與page caching爲他們提供服務,讓你只需要擊中分貝一次當CSS被修改時。以後的所有請求都將由Web服務器直接從緩存中提供,而不會觸及您的應用或數據庫。
# stylesheet.rb
class Stylesheet < ActiveRecord::Base
validates_presence_of :contents
end
# stylesheets_controller.rb
class StylesheetsController < ApplicationController
caches_page :show # magic happens here
def show
@stylesheet = Stylesheet.find(params[:id])
respond_to do |format|
format.html # regular ERB template
format.css { render :text => @stylesheet.contents, :content_type => "text/css" }
end
end
# the rest is your typical RESTful controller,
# just remember to expire the cache when the stylesheet changes
end
# routes.rb
resources :stylesheets
# layouts/application.html.erb
…
<link href="<%= stylesheet_path(@current_user.stylesheet) %>" rel="stylesheet" type="text/css" />
我正在嘗試這種方法,但遇到問題。我在CSS中的body元素上有一個背景圖片,但是在請求css時沒有被請求。 – 2011-11-13 19:22:49
那麼,我已經與這個工作了幾次,但他們肯定沒有固定的CSS文件可供選擇。它應該或多或少相同。
我用過的很多東西之一是content_for塊。基本上
<% content_for :css do %> // some css file or css content <% end %>
而且在佈局管理佈局
<%= yield :css %>
非常簡單的方法。
我有一個類似的問題 - 但只需要修改CSS一次。 我在模塊「Site」中存儲了幾個常量 - 然後我可以在CSS中使用常量或者在整個Rails應用程序中使用常量。當Rails應用程序重新啓動並且CSS輸入文件被修改時,我會自動生成CSS文件。
你可以做同樣的事情,但在site_settings.rb 引用符號名稱,然後取那些在每個用戶的基礎上,從MongoDB的
http://unixgods.org/~tilo/Ruby/Using_Variables_in_CSS_Files_with_Ruby_on_Rails.html
現在讓我們假設你有一些所謂的動態動態造型.css.scss.erb(最後的.erb非常重要!)在app/assets/stylesheets中。它將由ERB(然後通過薩斯)進行處理,並且因此可以包含這樣的東西
.some_container {
<% favorite_tags do |tag, color| %>
.tag.<%= tag %=> {
background-color: #<%= color %>;
}
<% end %>
}
- 1. web應用程序,處理狀態的最佳方式
- 2. 在rails應用程序中靜態頁面的最佳做法
- 3. 處理WP7應用程序開發的最佳方法?
- 4. 在Rails應用程序中處理多種貨幣的最佳方式
- 5. 在程序中處理用戶設置的最佳方法
- 6. 在Rails應用程序中測試視圖的最佳方法
- 7. 在Rails應用程序中管理多頁JavaScript的最佳方法是什麼?
- 8. 在其處理程序中捕獲信號的最佳方法
- 9. 在獨立應用程序中處理「忘記密碼」的最佳方法
- 10. 在Web應用程序中處理客戶特定請求的最佳方法?
- 11. 在三層應用程序中處理數據併發的最佳方法
- 12. 在Web應用程序中處理DateTime的最佳方法是什麼?
- 13. codeigniter/php應用程序中錯誤處理的最佳做法
- 14. 處理應用程序中的數據請求,最佳做法
- 15. 在文件下載HTTP處理程序中處理404的最佳方法?
- 16. 在rails中處理API版本控制的最佳方法
- 17. 在Rails 2.1.x中處理RoutingError的最佳方法是什麼?
- 18. 在Rails中處理多租戶的最佳方法3
- 19. 在Rails中處理多張照片的最佳方法
- 20. bootstrap-confiirmation不處理方法:在rails應用程序中刪除
- 21. JQuery - on() - 方法/動態處理程序
- 22. jQuery應用事件處理程序的最佳方式
- 23. 在Win Forms應用程序中處理多個線程的最佳方式
- 24. 同時運行代碼處理多線程應用程序的最佳方法
- 25. 在Rails應用程序中實現投票的最佳方式?
- 26. 處理應用程序配置的最佳做法是什麼?
- 27. 在Rails中管理動作按鈕狀態的最佳做法
- 28. 使用Rails生成靜態CSS文件的最佳方法
- 29. 在Rails應用程序中處理大文件上傳的最佳方法是什麼?
- 30. cocos2dx中的最佳處理方法
代替存儲在MongoDB中的CSS,爲什麼不將其存儲在磁盤上的CSS文件在公共目錄中的文件名是綁定到用戶的ID?這樣,你可以正常地服務於CSS(通過頭部的鏈接標籤)並利用瀏覽器緩存。無論何時進行更改,您都可以清除緩存並將基於編輯時間的緩存添加到鏈接標記src。 – 2011-01-18 21:38:49