當我在IRB運行此代碼:出錯創建新的文件
File.open('j1.txt','w') {|f| f.write("doc1223423")}
它成功地工作。但是,當我做的方法一樣在我的控制器,它提供了以下錯誤:
Errno::ENOENT (No such file or directory - file location as specified)
爲什麼會這樣?如何解決?
當我在IRB運行此代碼:出錯創建新的文件
File.open('j1.txt','w') {|f| f.write("doc1223423")}
它成功地工作。但是,當我做的方法一樣在我的控制器,它提供了以下錯誤:
Errno::ENOENT (No such file or directory - file location as specified)
爲什麼會這樣?如何解決?
解決。 我指定的上述文件位置不存在。 我在做這樣的
File.open ("#{RAILS_ROOT}/jatin/j.txt", 'w+') do |f|
f.write("blah")
end
但一些目錄/ jatin /是不存在的,所以解決辦法是先創建目錄,然後創建該文件。
Dir::mkdir("#{RAILS_ROOT}/jatin")
感謝您的幫助球員。
嘗試chagning 'w'
到'w+'
- 這將創建一個新的文件,'w'
只是打開一個現有寫(更新)。
這裏是一個很好的一輪的例子,可以幫助:
仍然不起作用 – 2010-11-14 20:16:33
嘗試使用你有寫權限的特定路徑,例如'/ tmp/j1.txt'(如果在Unix上)或'c:/ windows/temp/j1.txt「(如果在Windows上)。 – 2010-11-14 20:20:53
感謝您的鏈接,它真的很有幫助。 – 2010-11-14 20:39:41
你有沒有嘗試過使用文件的絕對路徑?如果使用絕對路徑時沒有發生錯誤,則可能是您的控制器無法從其所在的位置找到該文件。 – Vic 2010-11-14 20:14:53
@Vic:是的......我嘗試了絕對路徑,但問題仍然存在,現在我終於解決了。感謝您的幫助 – 2010-11-14 20:40:37
解決方法是什麼? – Vic 2010-11-14 21:03:44