2017-02-23 6 views
4

Я создал образец рельсов, который использует несущую для загрузки изображений. Я могу загрузить несколько изображений. Но теперь, когда я хочу их удалить, я просто занялся поиском решения. Я прочитал в документации, что мы можем использовать @user.remove_avatar! для удаления одного изображения. Но как удалить несколько изображений?Удаление нескольких изображений несущей волны

Любая помощь будет оценена по достоинству. Спасибо заранее. :)

+1

показать свой код как модель ассоциации –

+0

@AniketShivamTiwari Спасибо за учитывая мой вопрос. Но я не сохраняю его в какой-то другой модели. Он хранится как json в одной модели. Я выполнил [это] (https://github.com/carrierwaveuploader/carrierwave#multiple-file-uploads) для загрузки нескольких изображений. – Vishal

ответ

1

Это не похоже на то, что я делаю 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 

На мой взгляд, когда я выводить изображения у меня есть (где я это положение изображения):

<%= 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 

Это устраняет одно изображение, где вы имеют несколько изображений.

0

Я согласен с ответом наверх, но когда изображение осталось только с одним файлом, вышеуказанный метод неэффективен. Я решил эту проблему следующим образом. (Я сделал это под моделью.)

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) 
+0

Если вам нужно загрузить несколько файлов, я предлагаю вам создать модель, которая хранит файл напрямую, потому что он более гибкий. – YaEvan

Смежные вопросы