【问题标题】:Rails 3 Carrierwave How to delete file which is an attribute of a model?Rails 3 Carrierwave 如何删除作为模型属性的文件?
【发布时间】:2012-01-25 16:45:52
【问题描述】:

我关注 Railcast #253 http://railscasts.com/episodes/253-carrierwave-file-uploads,效果很好。但后来我用 ActiveAdmin 实现了它,因此使用了 Formtastic(ActiveAdmin 使用 Formtastic 作为表单)。

这样我就可以上传文件和下载文件了。

问题是,似乎 Carrierwave 在链接到 remove 链接时需要模型而不是模型的属性。

我有模型 Shipment,它具有 hbl_pdf 属性(PDF 文档)。这是我的删除链接...

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

我收到错误...undefined method model_name for PdfUploader:Class

我不想删除货件,只删除文件。

【问题讨论】:

    标签: ruby-on-rails ruby formtastic carrierwave activeadmin


    【解决方案1】:

    您为什么不在货件对象上调用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!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多