【问题标题】:Paperclip: "Image has an extension that does not match its contents"回形针:“图像的扩展名与其内容不匹配”
【发布时间】:2015-02-26 23:09:02
【问题描述】:

我有一个带有附件的Product 模型:

has_attached_file :image,
                  :path => ":rails_root/public/uploads/:basename.:extension"

validates_attachment_presence :image
validates_attachment_content_type :image,
                                  :content_type => ["image/jpg", "image/jpeg", "image/png"]

但是,无论我尝试上传哪种文件,验证都会失败并显示消息

图片的扩展名与其内容不匹配

我该如何解决这个问题?

【问题讨论】:

  • 为什么要在cmets中给出答案??反正你的回答是正确的
  • @janfoeh 它出现错误Missing template products/create 并且不写入数据库
  • 这是一个不同的问题。您能否将您的 create 控制器方法添加到您的问题中?或者更好的是,添加您的完整控制器。
  • 您可能遇到了验证问题。 @product 不保存,因此您的 create 方法不会重定向并尝试执行默认操作 - 呈现名为 create 的模板。尝试使用@product.save! 而不是@product.save 让它抛出异常;这样可以更容易地了解它为什么不保存。
  • @janfoeh 验证失败:图片的扩展名与其内容不匹配

标签: ruby-on-rails paperclip


【解决方案1】:

在您的情况下,您应该使用image 值作为文件输入名称:

<%= form.file_field :image %>

并允许 :image 字段而不是 :image_file_name:

params.require(:product).permit(:slug_en, :image)

【讨论】:

  • 出现错误 Missing template products/create and does not write to db
  • 好像@product.save 返回false。尝试将其更改为@product.save!,您将在日志中看到保存问题的原因。
  • 验证失败:图片的扩展名与其内容不匹配
  • 看来您使用的是 Windows。在这种情况下,您的最新问题描述为here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多