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 引用导致所有请求都被获取而不是删除。
我正在通过活动存储将一些文件保存到本地存储。我在我的页面上将它们显示为 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 引用导致所有请求都被获取而不是删除。