2009-04-21 7 views
3

J'essaie de vérifier si un fichier existe dans mon application rails. Je cours Ruby 1.8.6 et rails 2.1.2 avec Windows XP.FileTest.exists? problème avec ruby ​​sur les rails

Donc, le problème est que FileTest.exists? la méthode ne semble pas fonctionner. J'ai simplifié le code à ce point:

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

Si je fais ce que le système affiche « non » et comprend alors l'image qui affiche correctement, car il existe /images/header.jpg.

J'ai essayé FileTest.exists ?, FileTest.exist ?, File.exists ?, File.exist? et rien ne semble fonctionner.

Qu'est-ce que je fais mal? Merci

Répondre

14

Je suppose que c'est parce que vous demandez si un fichier "header.jpg" existe dans un répertoire "images" hors du répertoire racine de votre système (qui sur Windows je suppose est "c : \ "). Essayez de placer le chemin d'accès complet (à partir de la racine du système de fichiers) dans le répertoire "/ images" plutôt que dans le chemin de l'URL.

En particulier, comme l'a souligné @ Brian, vous devez utiliser:

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

Cela a fonctionné en utilisant à la fois votre commentaire et celui de Brian. Je le fais maintenant: sauf FileTest.exists? (RAILS_ROOT + "/ public/data/songs /" + recording.file_name) et ça marche bien. – marcgg

3

Ajouter RAILS_ROOT au nom du fichier que vous vérifiez avant d'appeler existe?

+0

cela vous dérangerait-il si j'incorpore votre réponse dans la mienne? –