Удаление элемента has_many_attached в Active Storage Rails 5.2 - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь создать метод delete для удаления изображения, связанного с событием в Rails.Я на самом деле заставил его работать до отправки кода, но теперь моя проблема заключается в том, чтобы сделать действие с Ajax.Приведенный ниже код работает и обновляет страницу формы с обновленным списком изображений.

Event.rb

has_many_attached :images

Admin_events_controller

def destroy_single_image
  @event_image = ActiveStorage::Attachment.find_by(blob_id)
  @event_image.purge
  redirect_back(fallback_location: request.referer)
end

Просмотр

<% if @event.images.any? %>
  <% @event.images.each do |event_image| %>
    <%= image_tag event_image, height: "100" %>
       <%= link_to 'Remove', destroy_single_image_admin_events_path(id: event_image.id),
            method: :delete,
              data: { confirm: 'Are you sure?' } %>
  <% end %>
<% end %>

маршрутов

resources :events do
  collection do
    get 'destroy_multiple_images'
    # get 'destroy_single_image'
    post 'destroy_single_image', action: "destroy_single_image"
  end
end

Запрос параметров(Старые параметры запроса, которые привели меня к изменению моего действия в файле маршрутов. Правильно ли я это сделал? Теперь он работает, как указано выше, но я боюсь любых проблем с безопасностью)

{"_method"=>"delete", "authenticity_token"=>"CrL7UAG671aSMiIVL6slvukHWT5S1YEaSEEdgtu1m8PKGm0deZk15uoPhXzhq/1oLNVp5otd8ai55tM0sLNGpw==", "controller"=>"admin/events", "action"=>"destroy", "id"=>"destroy_single_image", "format"=>"769"}

Так что моя проблематеперь с answer_to: js в методе destroy_single_image.Если я добавлю это как ниже.

Admin_events_controller

def destroy_single_image
  @event_image = ActiveStorage::Attachment.find(params[:id])
  @event_image.purge

  respond_to :js
  #redirect_back(fallback_location: request.referer)
end

Я знаю, что получаю ошибку в журналах моего сервера.

enter image description here

enter image description here

Это, я полагаю, связано с действием действия маршрутов?Я не добавил файл js, но он находится в той же папке, что и контроллер событий, и называется так же, как метод destory_single_image.js.erb

Кто-нибудь может пролить свет на это, пожалуйста?Спасибо.

Итак, подведем итоги.Приведенный выше код работает нормально, но обновил страницу формы редактирования при вызове сервера.Теперь я получаю ошибки, когда пытаюсь сделать вызов remote: true, и в моем контроллере есть response_to: js.: D

...