2017-10-07 108 views
6

Carrierwave kullanılarak standart bir resim yükleyicim var. Postgres'i de kullanıyorum. Yani bu benim göç JSON olarak resim ekleyerek neye benzediği:Carrierwave'daki görüntüler için varsayılan URL'yi nasıl ayarlayabilirim?

class AddImagesToListings < ActiveRecord::Migration[5.1] 
    def change 
    add_column :listings, :images, :json 
    remove_column :listings, :image 
    end 
end 

Ben görüntüleri [0] her zaman bazı görüntü var yapmak istiyorum, ama bu Carrierwave belgelerine gibi görünüyor sadece tek dosya yüklemeleri için bu kapsar.

def default_url(*args) 
    ActionController::Base.helpers.asset_path("default/" + ["default.jpg"].compact.join('_')) 
end 

Bu sadece varken çalışıyordu: Görüntüyü, ama şimdi öyle değil Şu anda, burada DEFAULT_URL yöntemidir. Resimlerin [0] varsayılan olarak ayarlanması için herhangi bir yol var mı? Böylece, sahip olduğum her giriş için geçerli bir resim [0] .url (bir kullanıcı listeye bir resim ekleyip eklemese de)?

cevap

1

Carrierwave bu konuda yardımcı olmadığından, bu iş için yardımcı veya geri arama yazmak gibi bir şeyi kullanabilirsiniz. İşte beğenebileceğiniz bazı öneriler.

  1. "= bir yardımcı
    module CarrierwaveHelper 
        def render_image_url(images, index) 
        return "Default.jpg" if index == 0 
        images[index].url 
        end 
    end 
    

yazın ve basitçe
    .url render_image_url resim yerine [0] ile ilgili görünümünde (0 görüntüleri,) diyoruz 2 ">
  1. Modelinize bir geri arama yapın.

before_create: carrierwave bu özen özelliği yerleşik olup olmadığını

def assign_default_image 
    self.image[0] = "default.jpg" 
end 
+0

biliyor musunuz before_update assign_default_image ya da belki gerekir? –

+0

böyle bir şey bulamadı ... –