FileTest.exists? проблема с рубином на рельсах - PullRequest
3 голосов
/ 21 апреля 2009

Я пытаюсь проверить, существует ли файл в моем приложении rails. Я использую ruby ​​1.8.6 и rails 2.1.2 с windows XP.

Итак, проблема в том, что 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? и ничего, похоже, не работает.

Что я делаю не так? Спасибо

Ответы [ 2 ]

14 голосов
/ 21 апреля 2009

Я предполагаю, что это потому, что вы спрашиваете, существует ли файл "header.jpg" в каталоге "images" вне корневого каталога вашей системы (который в 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
3 голосов
/ 21 апреля 2009

Добавить RAILS_ROOT к имени файла, который вы проверяете перед вызовом, существует?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...