0

我正在尝试使用回形针上传 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对象,设置'path','extension'和'body'然后回调在验证之前设置名为“source”的回形针附件,并在保存后设置另一个名为“preview”的附件。错误发生compile_previewself.preview = file

模型/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% 都有效,因为我已经将它与另一个模型一起使用,但它只是导致问题的“应用程序/javascript”。我也尝试过“text/plain”和旧的“text/javascript”mime 类型,但得到了同样的错误。

我之前没有看到任何人以这种方式与处理程序有问题,而回形针也没有提到它。

我正在使用 Rails 3.2.8 和 Paperclip 3.2.0

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

有没有人知道我在哪里出错了?

4

1 回答 1

0

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

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

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应该回来。filefile.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
于 2012-09-12T01:00:46.740 回答