2017-12-26 2 views
0

Ich benutze Carrierwave mit Rails 5. Ich muss mehrere Bilder zu einer Instanz hochladen. Aber wenn die Validierung fehlschlägt, gehen alle Bilder verloren. Ich habe image_cache zum Zwischenspeichern der hochgeladenen Datei gefunden und verwendet, aber es funktioniert nur für das Hochladen einzelner Dateien.Carrierwave-Cache mehrere Dateien

Ist in Carrierwave Weg mehrere Dateien für mehrere Dateien im Cache zu cachen.

Danke.

Antwort

0

für Rails GELÖST 5.1.4, 1.2.1 Carrierwave

Ich habe es ohne attr_accesor :images

im Blick:

= f.file_field :images, multiple: true 
= f.hidden_field :images_cache 

in Controller:

def create 
    @instance = Model.new(permited_parameters) 
    add_images 
    .......... 
    @instance.save 
end 

private 

def permited_parameters 
    params.require(:model_name).permit(..., ..., :images_cache) 
end 

def add_images 
    new_images = params.dig(:model_name, :images) || 
       params.dig(:model_name, :images).presence && 
       JSON.parse(params.dig(:model_name, :images)) 
    if new_images 
    images = @instance.images 
    images += new_images 
    @instance.images = images 
    end 
end 

Das Problem war im Cache-Datentyp. Die zwischengespeicherten Daten werden als [Array] as JSON

gefunden