Проблема с активным хранилищем Rails с удалением отдельных загрузок - PullRequest
0 голосов
/ 07 октября 2018

Я сохраняю некоторые файлы в локальное хранилище через активное хранилище.Я показываю их в виде ссылок на моей странице.Это могут быть PDF-файлы, изображения, документы Word и т. Д. Я хочу, чтобы рядом с ними была ссылка, чтобы можно было удалять отдельные файлы, но она еще не начала работать.Вот что у меня есть:

Модель проектов:

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?' } %>

Контроллер проектов удалить метод загрузки:

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

Если кто-нибудь может мне помочь с этим, я был бы признателен!

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Все было настроено правильно с самого начала.Проблема заключалась в том, что я случайно удалил файл include for application.js из моего проекта.Отсутствие ссылки на UJS приводило к получению всех запросов вместо удаления в моем случае.

0 голосов
/ 07 октября 2018

Ваш метод delete_upload_project_url предполагает две переменные: проект и загрузку /projects/:id/delete_upload/:upload_id.Вы только передаете идентификатор загрузки.Сделайте что-то вроде delete_upload_project_url(project.id, upload.id).

...