有没有人能够获得附件_fu来处理轨道3



我有一个rails应用程序,它正在从rails 2.3.5升级到rails 3。它使用attachment_fu上传文件。我们试图在不更改DB的情况下进行转换,所以我想避免此时更改为回形针或carrierwave。

有人成功地将attachment_fu与Rails 3和Ruby 1.9.2结合使用了吗?我们使用的是最新版本的attachment_fu,它声称适用于rails 3和ruby 1.9.2,但在任何包含文件上传的表单上都会得到"TypeError(无法将nil转换为Integer):"。

之前问题的所有答案似乎都是"切换到回形针或carrierwave",如下所示:扶手的Attachment_fu或回形针3或TypeError(不能将nil转换为Integer):

谢谢!

我做了以下更改,它在中工作

附件_fu.rb

def temp_path
  p = temp_paths.first
  if p.is_a?(ActionDispatch::Http::UploadedFile) # Rails 3.0.3 compatability fix
    p.tempfile.path
  else
    p.respond_to?(:path) ? p.path : p.to_s
  end
end

我还将returning filename.strip do |name|更改为filename.strip.tap do |name|

初始化.rb

def make_tmpname(basename, n)
  ext = nil
  n ||= 0
  sprintf("%s%d-%d%s", basename.to_s.gsub(/.w+$/) { |s| ext = s; '' }, $$, n, ext)
end

我在github上做了一个分叉https://github.com/debprado/attachment_fu

attachment_fu在attachment_fil/init.rb中修补Tempfile.make_tmpname,但它在1.9.2中不起作用:sprintf("%d",nil)失败,在1.8.7中,此表达式的结果为"0"。

修复方法是从在init.rb中插入一行

sprintf('%s%d-%d%s', File::basename(basename, ext), $$, n, ext)

n ||= 0
sprintf('%s%d-%d%s', File::basename(basename, ext), $$, n, ext)

你可以在这里找到一些讨论https://github.com/technoweenie/attachment_fu/issues/25

干杯!

试试我的支持Rails 3.2:的gemized版本

https://rubygems.org/gems/pothoven-attachment_fu

相关内容

  • 没有找到相关文章

最新更新