繁体   English   中英

Ruby on Rails中文件的意外行为

[英]Unexpected behaviour with a file in Ruby on Rails

尝试在Ruby on Rails中上传文件时,遇到一个问题。

这是我上传文件的方式:

def upload_image(image)
  File.new(Rails.root.join('assets','images','products',image.original_filename),'wb') do |f|
    f.write(image.read)
  end
end

引发异常:

Errno::ENOENT in ProductsController#update

No such file or directory - /home/alex/RubymineProjects/psg/assets/images/products/my-image.png

为什么会这样呢? 我只是在创建一个新文件,不是在尝试打开现有文件。

它不会创建目录。

File.new("test", 'wb') #=> creates the file test
File.new("test/test", 'wb') #=> test.rb:1:in `initialize': No such file or directory - test/test (Errno::ENOENT)

如果添加/ app,则具有您要查找的路径。 不过,不要真的以为这就是使用资产管道的方式。 请参阅此问题中的推理。

File.open(Rails.root.join('app','assets','images','test.jpg'),'wb') do |f|
  f.write("image")
end
 => 5

cat app/assets/images/test.jpg #=> image% 

暂无
暂无

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

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