首页 > 解决方案 > Rails 5.2 Active Storage 不删除附加图像

问题描述

我正在尝试删除附加到职位发布的图像。但是点击删除后,附加的图像仍然存在,并且不会从职位发布中删除。

工作展示页面

<div class="ui text container slides">
        <i class=" left angle icon"></i>
        <i class=" right angle icon"></i>
       <% @job.images.each_with_index do |image, index| %>
        <div class="slide active">
          <%= image_tag image, size: 200 %> 
 <%= link_to 'Remove', delete_image_attachment_job_url(image.signed_id),
                    method: :delete,
                    data: { confirm: 'Are you sure?' } %>
                </div> 
         <% end %>
    </div>
  </div>

路线

  resources :jobs do
  member do
    delete :delete_image_attachment
  end
end

作业控制器.rb

def delete_image_attachment
    @image = ActiveStorage::Blob.find_signed(params[:id])
    @image.purge
    redirect_to root_path
end

标签: ruby-on-railsrails-activestorage

解决方案


在我的控制器中,我替换@image = ActiveStorage::Blob.find_signed(params[:id]) 为:

def delete_image_attachment
    @image = ActiveStorage::Attachment.find(params[:id])
    @image.purge
    redirect_back(fallback_location: job_path) 
end

我的删除操作现在是:

<%= link_to 'Remove', delete_image_attachment_job_url(image),
                method: :delete,
                data: { confirm: 'Are you sure?' } %>

推荐阅读