Rails 删除单个上传的活动存储问题

Rails active storage issue with deleting individual uploads

我正在通过活动存储将一些文件保存到本地存储。我在我的页面上将它们显示为 links。它们可以是 pdf、图像、word 文档等。我想在它旁边有一个 link 以便能够删除单个文件,但还没有让它工作。这是我拥有的:

项目模型:

class Project < ApplicationRecord

belongs_to :user

has_one :proj_status, :foreign_key => "status_id", :primary_key => 'status_id'

has_many_attached :uploads

end

项目展示页面:

<%= link_to upload.filename, rails_blob_path(upload, disposition: :attachment) %>

<%= link_to 'Remove', delete_upload_project_url(upload.id), method: :delete, data: { confirm: 'Are you sure?' } %>

Projects Controller 删除上传方法:

def delete_upload

attachment = ActiveStorage::Attachment.find(params[:id])

attachment.purge # or use purge_later

redirect_back(fallback_location: projects_path)

end

我收到错误:

没有路由匹配[GET]“/projects/1/delete_upload”

我认为这是一个路由问题,但我还没能让它工作。

这也是我的路线部分:

resources :projects do

  member do

  delete :delete_upload

  end

end

关于如何让它工作的任何想法或想法?

这是我在项目部分的佣金路线:

DELETE /projects/:id/delete_upload/:upload_id(.:format) projects#delete_upload

projects GET /projects(.:format) projects#index

POST /projects(.:format) projects#create

new_project GET /projects/new(.:format) projects#new

edit_project GET /projects/:id/edit(.:format) projects#edit

project GET /projects/:id(.:format) projects#show

PATCH /projects/:id(.:format) projects#update

PUT /projects/:id(.:format) projects#update

DELETE /projects/:id(.:format) projects#destroy

如果有人能帮助我,我将不胜感激!

您的 delete_upload_project_url 方法需要两个变量:项目和上传 /projects/:id/delete_upload/:upload_id。您只传递上传 ID。做类似 delete_upload_project_url(project.id, upload.id).

的事情

一切从一开始就设置正确。问题是我不小心从我的项目中删除了 application.js 的包含。在我的案例中,缺少 UJS 引用导致所有请求都被获取而不是删除。