Rails 3 Carrierwave Как удалить файл, который является атрибутом модели? - PullRequest
3 голосов
/ 25 января 2012

Я следил за Railcast # 253 http://railscasts.com/episodes/253-carrierwave-file-uploads и прекрасно работает.Но затем я реализовал это с ActiveAdmin и, следовательно, Formtastic (ActiveAdmin использует Formtastic для форм).

Так что я могу загружать файлы и скачивать файлы.

Проблема в том, что, похоже, Carrierwaveпри связывании с удалить ссылок ожидает модель вместо атрибута модели.

У меня есть модель Отгрузка, которая имеет атрибут hbl_pdf (документ PDF).Это моя ссылка для удаления ...

row("HBL") { link_to 'remove', shipment.hbl_pdf, :confirm => "Are you sure?", :method => :delete }

Я получаю сообщение об ошибке ... undefined method model_name for PdfUploader:Class

Я не хочу удалять груз, только документ.

1 Ответ

12 голосов
/ 26 января 2012

Почему вы не звоните remove_hbl_pdf! на объект отгрузки вместо этого?Прочтите раздел «Удаление загруженных файлов» этого: https://github.com/jnicklas/carrierwave#readme

link_to 'remove', remove_shipment_pdf_path(shipment), :confirm => "Are you sure?", :method => :delete

и в вашем контроллере

def remove_shipment_pdf
  shipment = Shipment.find_by_id(params[:shipment_id])
  shipment.remove_hbl_pdf! if shipment
  # respond with something or redirect
end

Синтаксис команды удаления основан на имени вашего атрибута,Таким образом, если имя вашего атрибута модели равно .hbl_pdf, тогда оно равно remove_hbl_pdf!, а если оно равно .image, то оно будет remove_image!

.
...