Bir ray uygulamasında dinamik css işlemek için bir sorun araştırıyorum. Uygulama içinde, bireysel kullanıcılar ve/veya kullanıcı grupları, CSS ile gerçekleştirilen kişiselleştirilmiş görünüm ve hislere sahip olabilir. Herhangi bir sabit sayıda "görünüm ve his" veya css dosyası olmayacak, kullanıcı ve grup sayısı arttıkça sayı artacak, uygulamanın kullanıcı arayüzü ile görünüm ve his kullanıcı tarafından tanımlanacaktır. Tipik bir gün boyunca binlerce (on binlerce değil) css farklı varyasyonları sunulacak. App önceden inşa css mongodb saklayacaktır, böylece her istek için css inşa fiyatı ödemek zorunda kalmayacak, soru bu dinamik css içeriği kadar hizmet için en iyi yoldur. Erb veya sass kullanarak konuştuğu [1] [1] gibi başka sorular gördüm, ama bu cevapların bir kısmı birkaç yıl öncesine dayanıyordu, bu yüzden Rails 3 ile daha iyi bir cevap olmadığından emin olmak istedim.Raylar uygulamasında dinamik css'yi işlemenin en iyi yolu
cevap
Bu size birkaç fikir verebilir: Multiple robots.txt for subdomains in rails
Bir açıklama olmadan, bu bir 'cevap' değil ... ama bu büyük bir katkıdır. –
sen , kaynakların olarak CSS dosyaları tedavi veritabanı üzerinde saklayın ve sadece bir kez db vurmak gerekir, böylece page caching ile onlara hizmet edebilir CSS değiştirildiğinde. Tüm sonraki istekler, uygulamanıza veya db'ye dokunmadan doğrudan önbellekten web sunucusu tarafından sunulacaktır.
# 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" />
Bu yaklaşımı deniyorum ancak bir soruna dönüşüyorum. CSS'mdeki gövde öğesinde bir arka plan resmim var ancak css istenildiğinde bu istenmiyor. –
Arka plan resmim 'background: url ('/assets/image.jpg ') ' –
kullanmam durumunda doğru bir şekilde oluşturuluyor: stylesheet_path (resource) yolunu yerleştirmem ve tarayıcımın link etiketini css tipi ile birlikte type = 'text/css' gibi: "# {stylesheet_link_tag (stylesheet)}. css" – dennis
Eh, kez bu birkaç ile çalıştım ama kesinlikle seçim CSS dosyalarının hiçbir sabitlendi. Onun az çok aynı olmalı.
Çok kullandığım şeylerden biri content_for bloklarıydı. Temelde
<% content_for :css do %> // some css file or css content <% end %>
Ve
<%= yield :css %>
çok basit bir yolu düzenleri yönetmek için düzeninde
.Benzer bir sorunum vardı - ancak değiştirilmiş CSS'ye yalnızca bir kez hizmet vermesi gerekiyordu. Bir 'Site' modülünde birkaç sabiti saklıyorum - daha sonra CSS'de sabit olarak veya Rails uygulaması boyunca sabit olarak kullanabiliyorum. Rails uygulaması yeniden başlatıldığında ve CSS giriş dosyaları her değiştirildiğinde CSS dosyalarını otomatik olarak oluşturur.
Sen benzer bir şey, ama site_settings.rb yılında sembolik isimleri başvuru ve sonra en dinamik denilen bazı dinamik stil var diyelim MongoDB Şimdi
http://unixgods.org/~tilo/Ruby/Using_Variables_in_CSS_Files_with_Ruby_on_Rails.html
gelen her kullanıcı temelinde bu alamadan .css.scss.erb (sondaki .erb önemlidir) app/assets/stylesheets. Bu erb tarafından (ve sonra Sass) işlenecektir ve gibi
- 1. Hata iletilerini işlemenin en iyi yolu
- 2. Ember.js'de olayları işlemenin en iyi yolu nedir?
- 3. Python'da HTML işlemenin en iyi yolu nedir?
- 4. C# daki eşzamansız HttpWebRequest istisnalarını işlemenin en iyi yolu nedir?
- 5. CakePHP'de karmaşık veri tiplerini işlemenin en iyi yolu nedir?
- 6. Clojure'deki bu dizi dönüşümü işlemenin en iyi yolu nedir?
- 7. Kimlik doğrulamasını işlemenin en iyi yolu .NET WCF Web API'sı
- 8. MVC'de tekrarlanan formları işlemenin en iyi yolu nedir?
- 9. Bir resmi clojure'da işlemenin en iyi yolu nedir?
- 10. Rails Uygulaması'nda ayrılmış isimleri işlemenin en iyi yolu
- 11. GSON kullanarak JSON API yanıtlarını işlemenin en iyi yolu nedir?
- 12. Rails uygulamasında oy kullanmanın en iyi yolu?
- 13. Raylar dağıtımı - en iyi yol
- 14. Jmeter'da en iyi yolu bulmanın en iyi yolu nedir?
- 15. en iyi yolu?
- 16. en iyi yolu
- 17. en iyi yolu
- 18. C++ uygulamasında Kesir türünü uygulamanın en iyi yolu nedir?
- 19. Windows form uygulamasında bellek sızıntılarını bulmanın en iyi yolu nedir?
- 20. Windows Mobile 6 uygulamasında video gömmenin en iyi yolu nedir?
- 21. Bir Java uygulamasında verileri kaydetmenin en iyi yolu?
- 22. Raylar 3: yüklemeden önce görüntüyü önizlemenin en iyi yolu
- 23. CakePHP'de dinamik veritabanıyla çalıştırılan menüler oluşturmanın en iyi yolu nedir?
- 24. İlişkisel diziyi C# ile işlemenin en kolay yolu nedir?
- 25. UI güncellenirken bu arka plan sürecini işlemenin en iyi yolu nedir?
- 26. Linq'e katılmanın en iyi yolu
- 27. Spree'yi özelleştirmenin en iyi yolu?
- 28. PHP kancaları yapmanın en iyi yolu
- 29. Dosyayı sunucudan indirmenin en iyi yolu nedir
- 30. Golang'da api sürümlerini işlemenin idiotik yolu nedir?
yerine MongoDB içinde css depolanması, neden bunu bir disk css dosyasında saklamak değil}
gibi şeyler içerebilir Genel dizinde, kullanıcının kimliğine bağlı bir dosya adıyla? Böylelikle css'ye normal olarak (kafadaki bir bağlantı etiketi aracılığıyla) hizmet verebilir ve tarayıcı önbelleğe almanın avantajlarından yararlanabilirsiniz. Bir değişiklik yapıldığında, önbelleği temizleyebilir ve bağlantı etiketi src'ye bir düzenleme zamanı tabanlı önbellek bozucusu ekleyebilirdiniz. –