我想寫的東西到一個文件中。變量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