2015-02-06 3 views
0

app/assets/images/ 폴더에 "Flower.jpg"라는 이미지가 있습니다. <%=image_tag("Flower.jpg")%>은 그것을 표시하기 위해 작동하지만 html로 표시하고 싶습니다. <img src="Flower.jpg">은 아무 것도하지 않습니다.<img src=""> 이미지 경로를 허용하지 않습니다.

내 모델 사용자의 경우 이미지를 public/system/users/avatars/000/000에 저장하는 Paperclip을 사용하고 User.avatar_file_name은 절대 파일 경로 (이 경우 /system/users/avatars/000/000/157/thumb/Flower.jpg?1248273956)를 반환합니다. 이 경로를 src에 삽입하면 <img src="<%[email protected]_file_name%>">이 이미지를 표시합니다. <img src="/system/users/avatars/000/000/157/thumb/Flower.jpg?1248273956">는 않더라도,

> helper.image_tag("Flower.jpg") 
=> "<img alt=\"Flower\" src=\"/assets/Flower.jpg\" /> 

그러나 <img src="/assets/Flower.jpg\">가 표시되지 않습니다

나는 내 레일 콘솔에서이 Flower.jpg의 절대 경로를 발견했다. 왜 그런가요?

+1

확장 프로그램 끝에 "\"이있는 이유는 무엇입니까? – Kritner

+0

@Kritner 잘 모르겠습니다. 레일 콘트롤러가 준 출력입니다. –

답변

1

image_tag 도우미는 표준 이미지 폴더의 경로를 파일의 경로 앞에 추가합니다. 레일의 나의 버전이 "/ 이미지 /", 그래서이

<%=image_tag("Flower.jpg")%> 

이 같은 모든 자원 경로와 마찬가지로

<img src="/images/Flower.jpg"> 

로 밖으로 렌더링되는 실제 파일은 애플 리케이션을 기준으로해야한다 '공용 폴더, 즉 레일 버전에서

<RAILS ROOT>/public/images/Flower.jpg 

는 기본 경로입니다 /app/assets/images/처럼 보이는, 그래서이

<%=image_tag("Flower.jpg")%> 

이 파일을 가리키는
<img src="/app/assets/images/Flower.jpg"> 

로 밖으로 렌더링 :

<RAILS ROOT>/public/app/assets/images/Flower.jpg 

당신이 할 경우

<img src="Flower.jpg"> 

이 파일이 <RAILS ROOT>/public/Flower.jpg 될 것으로 예상되며, 분명히 거기에 없기 때문에 img 태그가 작동하지 않습니다. 당신이 도우미를 사용하지 않고, 스스로를 작성하려는 경우, 당신은 대신에 가고 src="scr="를 넣어 <RAILS ROOT/public 폴더에서 파일의 경로, 즉 HTML의 당신의 조각에 BTW

<img src="/app/assets/images/Flower.jpg"> 

을 제공 더 이상 부셔 라.

+0

''도 아무 것도하지 않습니다. 그래도 '/public/app/assets/images/Flower.jpg'를 가리키고 있다고 생각하지 않습니다. 나는'public' 폴더를 가지고 있지만 그것은'app' 폴더와 별개입니다. 'app'는 루트에있는 것으로 보입니다. –

+0

RAILS_ROOT 폴더와 관련하여 실제 파일은 어디에 있습니까? –

+0

'RAILS_ROOT/public' 폴더의 어딘가에 있어야하지만, 미리 배포 할 때 레일즈는'RAILS_ROOT/app/assets'의 파일을'RAILS_ROOT/public'에 복사 할 수 있습니다. –