【问题标题】:CarrierWave gem isn't uploading, so why is there no raised exception?CarrierWave gem 没有上传,为什么没有引发异常?
【发布时间】:2014-11-20 16:39:54
【问题描述】:

我正在尝试在 Rails 中的 ActiveAdmin 上安装 CarrierWave gem,而且设置看起来很简单。但是,当我尝试将测试图像上传到 /public/uploads 目录时,图像没有保存。更让人恼火的是,没有一个异常被提出,所以我不知道去哪里寻找问题。我可以创建帖子,浏览图像,选择该图像,然后提交帖子以便保存,但我仍然在 ActiveAdmin 的显示页面上看到IMAGE: EMPTY,如下所示。在图像中,我写了一个包含图像的 lorem ipsum 帖子,并保存了它。

如何让上传者上传?


ruby 1.9.3p547(2014-05-14 修订版 45962)[x86_64-darwin10.8.0]

Rails 4.1.6


这是 ActiveAdmin 中单个 Post 对象的显示页面


这是相关表单的整页截图

相同的表格,但放大了。显然,我并没有尝试在此屏幕截图中上传图片。


/app/uploaders/image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base

    storage :file

    def store_dir
        "public/uploads"
    end

end

/app/models/post.rb

class Post < ActiveRecord::Base

    belongs_to :category

    scope :rails, -> { where(category_id: 1) }

    extend FriendlyId
    friendly_id :title, use: [:slugged, :finders]

    mount_uploader :image, ImageUploader

end

【问题讨论】:

  • 这里可能有很多问题,让我们从 rails 版本开始,看看你用来创建记录的表单
  • 好的,@Richlewis,我更新了问题。感谢您伸出援手。在我弄清楚这件事情之前,我完全被困住了。

标签: ruby-on-rails ruby ruby-on-rails-4 carrierwave image-uploading


【解决方案1】:

经过几个小时的搜索,我在另一个问题中找到了答案的灵感,您可以找到 here

我根本没有得到结果的原因是我没有允许应用程序接受app/admin/post.rb 文件中的:image。现在,我仍然不知道为什么没有引发错误(甚至没有记录到控制台),但修复获取上传的问题就像允许上传参数一样简单,如下所示:

permit_params :title, :slug, :blurb, :content, :category_id, :image

当我发布这个问题时,我没有添加最后一个:image,所以我的应用程序只是丢弃了该参数,而不是将其与帖子的其余部分一起保存在文件系统中。

【讨论】:

  • 这将是我的下一个观点,但很好地解决了它......如果您在提交记录时查看控制台,您会注意到所有正在发布的参数,以及任何参数不允许的将显示为“未经允许的参数”,或者至少是类似的东西,所以即使您在视图中看不到任何错误,您的控制台也是您的朋友,哦,puts 也非常有用,尽管我是很棒的印刷品,我觉得更好
  • 哦,接下来你要允许的是_destroy,这样你就可以删除图像了
  • 我怎么会允许呢?只需将_destroy 添加到permit_params 列表中即可?
  • 当我这样做时,我得到了一长串错误。我是否应该在该文件中进行某种操作或阻止以提供删除功能?像一个按钮?
  • 好吧,您需要在表单中添加一个复选框,以便在编辑时查看文档以了解具体信息,但我会在接下来使用电脑时发布示例代码的答案,现在只是删除它,除非你把它整理出来
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 1970-01-01
  • 2012-08-03
  • 2014-11-10
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多