FileTest.exists?在轨道上的红宝石问题

时间:2009-04-21 15:14:43

标签: ruby-on-rails ruby file

我正在尝试检查我的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?似乎没有任何工作。

我做错了什么? 感谢

2 个答案:

答案 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添加到您正在检查的文件名中?