回形针:找不到"application/javascript"处理程序



我正在尝试用回形针上传javascript文件并获取

No handler found for "application/javascript"
.../paperclip-3.2.0/lib/paperclip/io_adapters/registry.rb:19:in `handler_for'
.../paperclip-3.2.0/lib/paperclip/io_adapters/registry.rb:29:in `for'
.../paperclip-3.2.0/lib/paperclip/attachment.rb:91:in `assign'
.../paperclip-3.2.0/lib/paperclip.rb:196:in `block in has_attached_file'

我将此作为模板系统的一部分使用。作为seed.rb的一部分(所以我不会通过表单上传),我循环浏览目录中的文件,为每个文件创建一个新的Javascript对象,设置"路径"、"扩展名"one_answers"主体",然后回调设置验证前名为"源"的回形针附件和保存后名为"预览"的另一个附件。错误发生在self.preview = filecompile_preview

models/javascript.rb

has_attached_file :source,
                :default_style => :original,
                :path => ":rails_root/tmp/:configured_path",
                :url => ":configured_url",
                :default_url   => "/assets/missing.gif",
                :use_timestamp => false,
                :storage => :filesystem
before_validation :set_source
before_post_process { false }
after_save :compile_preview
validates :body,          :presence => true,
                          :length   => { :maximum => 500.kilobytes }
validates :path,          :presence => true
validates :format,        :presence => true,
                          :inclusion => ["js"]
validates :handler,       :presence => true,
                          :inclusion => ["coffee", "js"]
def set_source
  file = StringIO.new(self.body)
  file.class.class_eval { attr_accessor :original_filename, :content_type }
  file.original_filename = "#{File.basename(self.path)}.#{self.extension}"
  file.content_type = "application/javascript"
  self.source = file
end
def compile_preview
  file = StringIO.new(self.render)
  file.class.class_eval { attr_accessor :original_filename, :content_type }
  file.original_filename = self.source_file_name
  file.content_type = self.source_content_type
  self.preview = file
  self.save
end

我知道99%的方法是有效的,因为我在另一个模型中使用过它,但它只是"application/javascript"造成的问题。我也尝试过"text/plain"和旧的"text/javascript"mime类型,但也出现了同样的错误。

我以前没有提到有人以这种方式处理问题,回形针也没有提到

我使用的是Rails 3.2.8&回形针3.2.0

我的handler属性可能与回形针冲突吗?

有人知道我这件事哪里不对吗?

原来我只需要休息一下,用全新的眼光看待它。

我缩短了上面的代码以更好地解释它,但这就是我实际拥有的:

def rendered_source_file
  file = StringIO.new(self.render)   
  file.class.class_eval { attr_accessor :original_filename, :content_type }
  file.original_filename = self.source_file_name
  file.content_type = self.source_content_type
end
def compile_preview
  self.preview = rendered_source_file
  self.save
end

问题是rendered_source_file,我应该返回file而不是file.content_type

所以应该是:

def rendered_source_file
  file = StringIO.new(self.render)   
  file.class.class_eval { attr_accessor :original_filename, :content_type }
  file.original_filename = self.source_file_name
  file.content_type = self.source_content_type
  file
end
def compile_preview
  self.preview = rendered_source_file
  self.save
end

最新更新