ActiveStorage - Выберите изображения для удаления - PullRequest
0 голосов
/ 31 января 2019

У меня есть форма, где пользователь может видеть загруженные изображения, а также может удалять по одному за раз.Но я хочу иметь флажки рядом с каждым изображением, чтобы пользователь мог выбрать изображения, которые он хочет удалить, и затем нажать кнопку, чтобы удалить их.

Прямо сейчас это то, что у меня есть:

_form.html.erb

<% if @vehicle.images.attached? %>
  <% @vehicle.images.each do |img| %>
    <div class="box_image">
      <div class="box_content">
        <%= image_tag img %>
        <div class="overlay">
          <%= link_to delete_upload_vehicle_url(@vehicle, img.id), method: :delete, data: { confirm_swal: 'Tem a certeza que quer eliminar esta imagem?' }, class:"delete_image" do %>
            <i class="fa fa-times"></i>
          <% end %>
        </div>
      </div>
    </div>
  <% end %>
<% end %>

Vehicles_controller.rb

def delete_upload
  attachment = ActiveStorage::Attachment.find(params[:upload_id])
  attachment.purge
  redirect_back(fallback_location: vehicles_path)
end

rout.rb

resources :vehicles do
  member do
    delete "delete_upload/:upload_id", action: :delete_upload, as: :delete_upload
  end
end

Изображение

image

Как мне добиться того, чего я хочу?Если бы кто-то мог привести мне пример, я был бы признателен :)

1 Ответ

0 голосов
/ 04 июля 2019

По вашему мнению, вам нужно установить флажок для каждого изображения, которое можно выбрать с помощью формы, которая будет отправлена ​​нажатием кнопки

<%= form_tag destroy_multiple_images_path, method: :delete do %>
<% if @vehicle.images.attached? %>
  <% @vehicle.images.each do |img| %>
    <div class="box_image">
      <div class="box_content">
        <%= image_tag img %>
        <%= check_box_tag "deleted_img_ids[]", img.id %>
      </div>
    </div>
  <% end %>
<% end %>
<%= submit_tag "Delete selected" %>
<% end %>

в вашем контроллере, вы можете сделать следующее:

vehicle_controller.rb:

def destroy_multiple
  attachments = ActiveStorage::Attachment.where(id: params[:deleted_img_ids])
  attachments.map(&:purge)
end

Не стесняйтесь задавать любые сомнения

...