Ruby on Rails - 未定义的方法"临时文件"用于"x89PNGrn":String



我有以下在我的控制器规范上传文件:

post :file_upload,
   user_id: @project.user.username,
   id: @project.name,
   branch_name: 'master',
   commit: 'first commit',
   file: fixture_file_upload("files/happypanda.png", "image/png")

我认为这是上传文件的正确方式,但它一直给我:

NoMethodError:未定义的方法' tempfile' for "x89PNGrn":字符串

我最近也遇到了fixture_file_upload的麻烦,但好消息是该方法只是大致如下代码的快捷方式:

Rack::Test::UploadedFile.new("#{Rails.root}/spec/fixtures/#{file_path}", mime_type)

所以尝试使用这个低级调用,如果对你来说效果更好,你甚至可以把它包装在一个helper方法中:

def file_upload(name)
  Rack::Test::UploadedFile.new("#{Rails.root}/spec/_files/#{name}")
end

(注意路径/spec/fixtures没有什么特别之处,这只是假定的默认值。)

最新更新