在Active Storage Rails 5.2中删除has_many_attached项

时间:2019-02-13 14:57:36

标签: ruby-on-rails ajax ruby-on-rails-5 rails-activestorage

我正在尝试创建一个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

请求参数(旧的请求参数导致我更改了routes文件中的操作。我这样做是否正确?它现在可以如上所述工作,但是我担心任何安全性问题)

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

所以我的问题现在是destroy_single_image方法中的response_to:js。如果我像下面这样添加。

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

相同

有人能对此有所启发吗?谢谢。

所以回顾一下。上面的代码正常工作,但是在调用服务器时刷新了编辑表单页面。尝试将呼叫远程设置为true时,我现在遇到错误,并且我的控制器中包含了response_to:js。 :D

0 个答案:

没有答案