繁体   English   中英

使用ruby的AWS S3的json文件的内容类型是什么?

[英]What is the content type of json file to AWS S3 with ruby?

我想用ruby用paperclip将json文件上传到S3。 我编码如下,但返回以下错误。

未定义的方法“合并”为“应用程序/ JSON”:字符串

你能告诉我如何设置json文件的内容类型吗?

product_definition.rb

class ProductDefinition < ActiveRecord::Base
  belongs_to :product

  has_attached_file :meta_data,
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :url => ":s3_domain_url",
    :path => "/assets/:id/:style/:basename.:extension",
    :s3_host_name => "s3-ap-northeast-1.amazonaws.com"

  validates_attachment :meta_data, content_type: 'application/json'
end

products_controller.rb

@product_definition = ProductDefinition.create(meta_data:sample.json)

如果您使用的是Paperclip的最新版本,则好像是错误地将参数格式化为validates_attachment_content_type 我认为应该是:

validates_attachment :meta_data, content_type: { content_type: 'application/json' }

请参阅Paperclip自述文件中的示例: https : //github.com/thoughtbot/paperclip#validations

编辑:我得出这个结论的方法是注意到错误,它试图在字符串上调用merge 合并是在Hash上调用的,因此,它期望:content_type的Hash值。

您所拥有的完全是github上当前文档的状态,但是它不起作用: https : //github.com/thoughtbot/paperclip其他示例使用了不同的格式化匹配类型的方式-非常混乱。

似乎起作用的是语法更改,该更改可以追溯到几年前,即:

validates_attachment :meta_data, attachment_content_type: {content_type: 'application/json'}

您还可以将一组可接受的内容类型放入数组中,例如

validates_attachment :meta_data, attachment_content_type: {content_type: ['application/json', 'application/doc']}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM