【问题标题】:How to delete paperclip image in active admin on Heroku如何在 Heroku 的活动管理员中删除回形针图像
【发布时间】:2014-04-12 03:22:10
【问题描述】:

截至目前,用户可以将图像上传到活动管理员并查看该图像的预览。但是,我不确定如何向该图像添加删除按钮。这是我现在在 Active Admin 中用于内容输入视图的代码:

 ActiveAdmin.register Content do

  form :html => { :enctype => "multipart/form-data" } do |f|
      f.input :image, :as => :file, :hint => f.template.image_tag(f.object.image.url(:thumb))
      f.input :remove_image, as: :boolean, required: false, label: "remove image"
    end
  f.buttons
 end

模型内容.rb

  attr_writer :remove_image

  def remove_image
    @remove_image || false
  end

  def before_remove_image
    if self.remove_image
      self.remove_image = nil
    end
  end

当我检查布尔值并尝试更新它时,它向我抛出了以下错误:

RSolr::Error::Http - 500 Internal Server Error
Error:     /Users/LMo/Made/gluten-free-all/gluten-free/solr/data/development/index/segments_11 (No such file or directory)

java.io.FileNotFoundException: /Users/LMo/Made/gluten-free-all/gluten-free/solr/data/development/index/segments_11 (No such file or directory)
    at java.io.RandomAccessFile.open(Native Method)
    at java.io.RandomAccessFile.<init>(RandomAccessFile.java:233)
    at org.apache.lucene.store.SimpleFSDirectory$SimpleFSIndexInput$Descriptor.<init>(SimpleFSDirectory.java:70)
    at org.apache.lucene.store.SimpleFSDirectory$SimpleFSIndexInput.<init>(SimpleFSDirectory.java:97)
    at org.apache.lucene.store.NIOFSDirectory$NIOFSIndexInput.<init>(NIOFSDirectory.java:92)
    at org.apache.lucene.store.NIOFSDirectory.openInput(NIOFSDirectory.java:79)
    at org.apache.lucene.store.FSDirectory.openInput(FSDirectory.java:345)
    at org.apache.lucene.index.SegmentInfos.read(SegmentInfos.java:265)

【问题讨论】:

    标签: ruby-on-rails paperclip activeadmin


    【解决方案1】:

    我用过这个,但它可能用于旧版本的 ActiveAdmin。也许你可以修改它?

    # In app/admin/model.rb
    form :html => { :enctype => "multipart/form-data" } do |f|
      f.inputs do
        #...
        f.input :icon, :as => :file, :label => "Icon", :hint => f.template.(f.object.icon.url(:thumb))
          if (f.object.icon.present?)
            f.input :delete_icon, :as=> :boolean, :required => false, :label => 'Remove image'
          end
       end
       f.buttons
     end
    
    # model.rb
    attr_accessor :delete_icon
    before_validation { self.icon.clear if self.delete_icon == '1' }
    

    【讨论】:

    • 您的模型是什么样的,您是否需要在数据库中添加一列以获取布尔值?谢谢!
    • 好点。我已经从我的模型中添加了字段。让我知道这是否有效...否则我会继续搜索。
    • 酷!是的,我什至可能在不久前从 SO 答案或互联网上的某个地方抓住了这一点。很高兴它对你有用!
    • 哎呀。出于某种原因,这不适用于 Heroku。想法?
    • 嗯不确定...可能需要更多的时间来继续。看起来这不是文件的正确位置?
    【解决方案2】:

    感谢你们的帮助。这是最终的工作代码...

    admin/product.rb

    f.input :image, required: false, hint: (("Current image:<br/>").html_safe + f.template.image_tag(f.object.image.url(:thumb))).html_safe
    f.input :remove_image, as: :boolean, required: false, label: "Remove Image"
    

    models/product.rb

    attr_writer :remove_image
    
    def remove_image
      @remove_image || false
    end
    
    before_validation { self.image.clear if self.remove_image == '1' }
    

    【讨论】:

      猜你喜欢
      • 2017-03-16
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多