2009-04-21 62 views
3

我想檢查一下文件是否存在於我的Rails應用程序中。 我在Windows XP上運行ruby 1.8.6和rails 2.1.2。FileTest.exists?與軌道上的紅寶石問題

所以,問題是FileTest.exists?方法似乎沒有工作。我簡單的代碼到這一點:

if FileTest.exists?("/images/header.jpg") 
     render :text => "yes" 
else 
     render :text => "no <img src='/images/header.jpg' />" 
end 

如果我這樣做,系統會顯示「無」,然後包括顯示正確,因爲/images/header.jpg存在的圖像。

我試過FileTest.exists?,FileTest.exist?,File.exists ?, File.exist?似乎沒有任何工作。

我在做什麼錯? 謝謝

回答

14

我猜這是因爲你問一個文件「header.jpg」是否存在於系統根目錄下的目錄「images」中(在Windows中我認爲是「c :\「)。嘗試將完整路徑(從文件系統根目錄)放到「/ images」目錄而不是URL路徑。

特別是,由@布賴恩指出的那樣,你應該使用:

FileTest.exists?(RAILS_ROOT + "/images/header.jpg") # < rails 3.0 
FileTest.exists?(Rails.root + "/images/header.jpg") # >= rails 3.0 
+0

它使用你的評論和布賴恩的工作。 我現在這樣做:除非FileTest.exists?(RAILS_ROOT +「/ public/data/songs /」+ recording.file_name)並且它工作正常。 – marcgg 2009-04-21 16:08:32

3

添加RAILS_ROOT到您正在檢查調用之前存在的文件名?

+0

你介意我是否將你的答案加入我的? – 2009-04-21 15:59:07