5

Rails 3 uygulamasını 3.2 sürümüne yükseltiyorum ve varlık boru hattını ayarlıyorum. Bu css/js için harika ama ben gerçekten resimler için kullanma noktasını göremiyorum ve maalesef bir ton referans/images/*.png ve benzeri bir css var. Yalnızca görüntüler için Raylar 3.1 varlık boru hattını devre dışı bırakabilir misiniz?

image_tag("x.png") <img src="/images/x.png"> yerine <img src="/assets/x.png"> dönen geri döner yüzden sadece görüntüler için varlık boru hattı devre dışı bırakmak için bir yolu var mı? Teşekkürler!

cevap

0

Bu gemiye bir göz atın: https://github.com/spohlenz/digestion, ihtiyacınız olanı yapmalısınız :). Aksi halde, varlık borusunda yer almak istemediğiniz varlıkları uygulamadan/varlıklardan tekrar halka (ör. Herkese açık/resimler) olarak taşıyabilirsiniz. Her şey bir mücevher için gerek kalmadan beklediğiniz gibi çalışmalıdır.

4

yapabilirsiniz maymun yama ActionView :: Baz, raylar konsolunda bu deneyin: Örneğin bir in başlatıcısı bu yerleştirebilirsiniz

helper.image_path "foo" #=> "/assets/foo" 

module OldImagePath 
    def image_path(source) 
    asset_paths.compute_public_path(source, 'images') 
    end 
    alias_method :path_to_image, :image_path 
end 
ActionView::Base.send :include, OldImagePath 

helper.image_path "foo" #=> "/images/foo" 

. Varsayılan olarak ActionView :: Base, image_path'i tanımlayan ActionView :: Helpers :: AssetTagHelper ve Sprockets :: Helpers :: RailsHelper öğelerini içerir, ancak ikincisi öncelik kazanır. Hepsine göre öncelikli olan kendi modülümü ekliyorum (içindeki kod, ActionView :: Helpers :: AssetTagHelper'dan alınmıştır).

Görüntü için de varlık boru hattını kullanmak mantıklıdır. Dosya adlarında hash suması alırlar, böylece istemcinin, dosyanın değiştirilip değiştirilmediğini sormadan, istemci tarafında sonsuza dek önbelleğe alınabilirler.

+0

Bunu herkes doğrulayabilir mi? Mermiyi ısırıp, görüntüler için de varlık boru hattını kucakladım. – swrobel

+0

Teşekkür ederim @Semyon bir çekicilik gibi çalışır! – wael34218

+0

Teşekkürler! Varlık boru hattı üzerinden bir görüntü yolunu çözme hatası oluşursa, bir AssetNotPrecompiledError ürününün üretimde 500 sunucu hatası üretmesini engellemek için bu tekniği kullandım. Image_path'ımı geçersiz kılmama rağmen, 'super (source)' derim, ancak hatayı kaydeden ve yol için "#" döndüren bir kurtarma maddesi ekleyin. 'ActionView :: Base.send' satırını önerdiğiniz gibi bir başlatıcıya koydum. Mükemmel çalışıyor! –

İlgili konular