2015-11-29 33 views
1

我已經在我的模型中實現了「多文件上傳」,就像在CarrierWave文檔中所解釋的那樣,並且它工作得很好。我的問題是,我無法讓模型更新工作。當我嘗試添加新文件時,會刪除舊文件。我想保持兩個。這裏是我的模型的一部分和控制器:使用CarrierWave更新多個文件上傳

class Album < ActiveRecord::Base 
    mount_uploaders :photos, PhotosUploader 
end 

class AlbumController < ApplicationController 
    def create 
    @album = Album.new(album_params) 
    if @album.save 
     flash[:success] = 'Album created' 
     redirect_to @album 
    else 
     render 'new' 
    end 
    end 

    def update 
    @album = Album.find(params[:id]) 
    if @album.update_attributes(album_params) 
     flash[:success] = 'Album created' 
     redirect_to @album 
    else 
     render 'edit' 
    end 
    end 

    private 

    def album_params 
     params.require(:album).permit({ photos: [] }) 
    end 
end 

我想過把照片在不同的模型,但如果我能使其工作這樣效果會更好。有什麼建議麼?

回答

2

我在下面的更新方法中確保CarrierWave上傳的現有圖像(頭像)保持完好。我有一個單獨的方法,允許用戶單獨刪除圖像。

def update 
    project_params_holder = project_params 
    project_params_holder[:avatars] += @project.avatars if project_params_holder[:avatars] 

    respond_to do |format| 
     if @project.update(project_params_holder) 
     format.html { redirect_to @project, notice: 'Project was successfully updated.' } 
     format.json { render :show, status: :ok, location: @project } 
     else 
     format.html { render :edit } 
     format.json { render json: @project.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
相關問題