2009-04-21 5 views
3

내 레일 어플리케이션에 파일이 있는지 확인하려고합니다. 나는 루비 1.8.6과 레일 2.1.2를 윈도우 XP에서 돌리고있다.FileTest.exists? 레일에 루비 문제가 있습니다

그래서 문제는 FileTest.exists? 방법이 작동하지 않는 것 같습니다. 나는이 점에 코드를 단순화 :

나는 다음 시스템에 "아니오"하고 /images/header.jpg가 존재하기 때문에 정확하게 표시하는 이미지를 포함 할 경우
if FileTest.exists?("/images/header.jpg") 
     render :text => "yes" 
else 
     render :text => "no <img src='/images/header.jpg' />" 
end 

. 파일명 : 아무것도 작동하지 않는 것 같습니다.

내가 뭘 잘못하고 있니? 감사합니다

답변

14

"header.jpg"파일이 시스템의 루트 디렉토리에있는 "images"디렉토리에 있는지 여부를 묻는 것입니다. Windows에서는 "c"라고 가정합니다. : \ "). 전체 경로 (파일 시스템 루트에서)를 URL 경로가 아닌 "/ images"디렉토리에 넣으십시오. @ 브라이언에 의해 지적 특히

, 당신은 사용해야합니다

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

귀하의 의견과 Brian 's를 모두 사용하여 효과가있었습니다. 이제 FileTest.exists가 없으면 (RAILS_ROOT + "/ public/data/songs /"+ recording.file_name) 괜찮습니다. – marcgg

3

이 호출이 존재하기 전에 확인하고 파일 이름에 RAILS_ROOT을 추가 하시겠습니까?

+0

내가 내 대답을 이해하지 못했습니까? –