遵循此方法:
class ImagesController < ApplicationController
before_action :set_gallery
def create
add_more_images(images_params[:images])
flash[:error] = "Failed uploading images" unless @gallery.save
redirect_to :back
end
def destroy
remove_image_at_index(params[:id].to_i)
flash[:error] = "Failed deleting image" unless @gallery.save
redirect_to :back
end
private
def set_gallery
@gallery = Gallery.find(params[:gallery_id])
end
def add_more_images(new_images)
images = @gallery.images
images += new_images
@gallery.images = images
end
def remove_image_at_index(index)
remain_images = @gallery.images # copy the array
deleted_image = remain_images.delete_at(index) # delete the target image
deleted_image.try(:remove!) # delete image from S3
@gallery.images = remain_images # re-assign back
end
def images_params
params.require(:gallery).permit({images: []}) # allow nested params as array
end
end
我似乎无法正确删除最后一个文件。在我的打印文件列表中,它一直站在那里。奇怪的是0kb。
然后当我加载新文件时,这个文件就会消失。
答案 0 :(得分:5)
我遇到了同样的问题,我发现你必须打电话给'remove_images!&#39;如果这是最后一个。在&#39; remove_image_at_index&#39;功能添加:
@gallery.remove_images! if remain_images.empty?
此致