我創建了一個使用carrierwave上傳圖像的示例rails應用程序。我可以上傳多張圖片。但是現在,當我想刪除它們時,我只是忙於搜索解決方案。我在文檔中讀到我們可以使用@user.remove_avatar!
來刪除單個圖像。但如何刪除多個圖像?刪除carrierwave的多個圖像
任何幫助將不勝感激。 在此先感謝。 :)
我創建了一個使用carrierwave上傳圖像的示例rails應用程序。我可以上傳多張圖片。但是現在,當我想刪除它們時,我只是忙於搜索解決方案。我在文檔中讀到我們可以使用@user.remove_avatar!
來刪除單個圖像。但如何刪除多個圖像?刪除carrierwave的多個圖像
任何幫助將不勝感激。 在此先感謝。 :)
這並不覺得最Rails做事的方式,但我有這種方法(我從其他地方的建議代碼修改)。
def delete_picture
@i = params[:i].to_i
remain_images = @project.avatars # copy initial avatars
delete_image = remain_images.delete_at(@i) # delete the target image
delete_image.try(:remove!) # delete image
@project.avatars = remain_images # re-assign back
@project.save
end
在我看來,我輸出我的圖像(i爲圖像位置):
<%= link_to delete_picture_project_path(i: i), method: :delete, confirm: 'Delete?', dataType: 'script', 'data-message' => 'Are you sure?', 'data-severity' => 'danger', :remote => true do %>
<%= image_tag('delete') %>
<% end %>
而且在路線
resources :projects do
member do
delete 'delete_picture', to: "projects#delete_picture"
end
end
這消除了單個圖像,你有多個圖像。
我同意樓上的答案,但是當圖像只剩下一個文件時,上面的方法是無效的。我通過以下方式解決了這個問題。(我做了它的型號。)
def delete_picture(index)
remain_pictures = self.pictures
if remain_pictures.size != 1
delete_picture = remain_pictures.delete_at(index)
delete_picture.remove!
self.pictures = remain_pictures
else
remove_reports!
end
save
end
@user.delete_picture(params[:index].to_i)
如果你需要上傳多個文件,我建議你創建一個模型直接存儲文件,因爲它更靈活。 – YaEvan
顯示像模型關聯您的一些代碼 –
@AniketShivamTiwari謝謝您考慮我的問題。但我並不是將它保存在一些不同的模型中。它在一個模型中被存儲爲json。我跟隨[this](https://github.com/carrierwaveuploader/carrierwave#multiple-file-uploads)進行多個圖片上傳。 – Vishal