我想写的东西到一个文件中。变量Errno :: ENOENT(没有这样的文件或目录@ rb_sysopen
# where userid is any intger [sic]
path = Rails.root + "public/system/users/#{user.id}/style/img.jpg"
File.open(path, 'wb') do |file|
file.puts f.read
end
当执行这段代码,我得到这个错误。我知道这个文件夹没有按”牛逼存在,但File.open
与w
模式创建一个新的文件,如果它不存在。
这是为什么不工作?
只是好奇:为什么是File.join可取吗?它总是将路径组件连接到平台特定的分隔符(例如,Windows上的'\')。虽然**有**情况,我们希望在所有平台上都使用'/',因为这样可以减少可移植性问题。在这里发布的代码的情况下,我不明白为什么平台特定的文件分隔符可能是一个优势。 – user1934428
@ user1934428“我们通常试图坚持/在所有平台上,因为这样可以减少便携性方面的令人头疼的问题。” - 这是无稽之谈,使用File.join有助于避免类似于OP中的愚蠢错误: Rails.root'不以斜线结尾,并使用'+'给出'/ railsrootpublic /'(注意上面的斜线缺失)。 – mudasobwa
@mudasobwa:在我的Rails控制台中Rails.root +“bla/bla” GIves correct路径:) – ashwintastic