我正在尝试检查我的rails应用程序中是否存在文件。 我正在运行ruby 1.8.6并使用Windows XP运行2.1.2。
那么,问题是FileTest.exists?方法似乎不起作用。我已经简化了代码:
if FileTest.exists?("/images/header.jpg")
render :text => "yes"
else
render :text => "no <img src='/images/header.jpg' />"
end
如果我这样做,系统会显示“no”,然后包含正确显示的图像,因为/images/header.jpg存在。
我尝试过FileTest.exists?,FileTest.exist?,File.exists?,File.exist?似乎没有任何工作。
我做错了什么? 感谢
答案 0 :(得分:14)
我猜这是因为你问你的系统根目录下的目录“images”中是否存在“header.jpg”文件(在Windows上我认为是“c:\” )。尝试将完整路径(从文件系统根目录)放到“/ images”目录而不是URL路径。
特别是,正如@Brian所指出的,你应该使用:
FileTest.exists?(RAILS_ROOT + "/images/header.jpg") # < rails 3.0
FileTest.exists?(Rails.root + "/images/header.jpg") # >= rails 3.0
答案 1 :(得分:3)
在调用之前将RAILS_ROOT
添加到您正在检查的文件名中?