2013-04-05 2 views
10

index.html.erb 코드가 표시되지 않는 -이유는 이미지 내 레일에 기본 응용 프로그램

<h1>Listing products</h1> 

<table border="1"> 

<% @products.each do |product| %> 
    <tr> 
    <td><%= product.title %></td> 
    <td><%= product.description %></td> 
    <td><%= image_tag(product.image_url, :class => 'list_image') %></td> 
    <td><%= product.price %></td> 
    <td><%= link_to 'Show', product %></td> 
    <td><%= link_to 'Edit', edit_product_path(product) %></td> 
    <td><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 
<% end %> 
</table> 

<br /> 

<%= link_to 'New Product', new_product_path %> 

및 이미지는 스틸 이미지가 프론트 엔드에 표시되지 않습니다 ..하지만 app\assets\images 받고있다.

내가 Firebug 일 때 이미지 태그가 올바르게 형성되었다고 생각합니다.이 부분에서 내가 누락 된 부분을 알려주세요.

<img src="/images/product1.jpg" class="list_image" alt="Product1"> 

스크린 샷 -

image placeholder

날 내가 뭘 잘못 알려이며 어떻게 해결합니까 -

screenshot

이미지뿐만 아니라 장소에 .

편집

github.com/swapnesh/depot

은 내 경우에는 작동하지 않는 이유를 알려주세요.

비록 /images/product1.jpg에서/assets/product1.jpg으로 변경됩니다.

+0

종이 클립 또는 반송파를 사용하고 있습니까? – Kashiftufail

+0

** **/app/assets/images/product1.jpg ** 파일이 있는지 100 % 확실합니까? 파일이 존재하지 않을 수 있고 도우미가 **/assets/product1.jpg 대신 **/images/product1.jpg ** 경로를 사용하고 있습니다 ** – rorra

+0

'src' 속성 편집을 시도하십시오 : Product1'to 'Product1'in firebug – codeit

답변

20

는 자산 파이프 라인 http://guides.rubyonrails.org/asset_pipeline.html 사용하는 경우,

이미지 경로는 이미지가 이미 스리 칸스으로 public/images

+0

아니요 기본적으로 이미지는'/ assets/images /'로 검색됩니다. – codeit

+0

@Srikanth Perfect .. 내가 "/images/product1.jpg"를 변경했을 때 작동합니다 ---> "/assets/product1.jpg".. 내가 처음이라면 대답을 자세히 설명해 주실 수 있겠습니까? (비록 당신이 언급 한 URL을 체크했으나 간단한 단어로 평가 될 것입니다.) +1 – swapnesh

+0

@Swapnesh :이 행동을 이해하려면 자산 파이프 라인 문서를 읽어야 할 것입니다 . Rails 3.1에서부터 자산 파이프 라인이 도입되었습니다. 이미지, css, js를 assets 디렉토리로 옮기고보기 파일에서 경로를 더 쉽게 만듭니다. View 파일에서 우리는 /assets/product.jpg, /assets/product.css를 호출했으나 /assets/images/product.jpg, /assets/stylesheets/product.css에 정리했습니다. 이것은 또한 생산에 JS, CSS, 이미지를 압축 할 수 있습니다. –

2

에 폴더를 이동, /assets/product1.jpg 대신 /images/product1.jpg

는 자산 파이프 라인을 사용하지 않는 경우이어야한다 자산 경로가 참조되어야한다고 말했다. 예를 들어 <%= image_tag 'rails.png' %>을 코드에 넣고 방화 광 (firebug) (또는 크롬 내의 요소를 검사)을 검사하여 결과를 확인할 수 있습니다.

레일즈로 애자일 웹 개발을 수행 한 것을 볼 수 있기 때문에 코드가 작동하지 않는 이유는 잘 모르겠습니다. depot 응용 프로그램을 문제없이 실행하고 있습니다. 테이블에서 'Product1', 'Product2'및 'Product3'을 볼 수 있습니다.이 사실은 실제로 image_url text_field에서 채워진 것입니까? 'Product1'을 'product1.jpg'로 변경하면 어떻게됩니까? 당신은 종이 클립을 사용하려는 경우 보조 노트에

, 전화는 다음과 같이한다 : 그냥 응용 프로그램을 확인

<%= image_tag(product.image.url, class: 'list_image') %> 
9

, 코드 아무 문제가 없다. 유일한 것은 image_tag의 작동 방식을 이해하는 것입니다.

일반적으로 이미지, javscript 및 스타일 시트는 모두 /assets 디렉토리에 저장합니다. 개발 환경에서 작업 할 때 해당 파일은 압축되지 않은 상태로 제공되지만 프로덕션 환경에 배포 할 때 자산은 사전 컴파일되고 축소되며 결과 파일은 public/assets에 저장됩니다.

축소 된 자산의 개념은 클라이언트의 요청을보다 빠르게 만들고 대역폭을 절약하는 것입니다.

image_tag 이제 이미지의 외부 경로, 이미지의 로컬 경로 또는 이미지의 상대 경로를 사용할 수 있습니다.

당신이 할 때

<%= image_tag "http://www.mywebsite.com/image.jpg" %> 

는 이미지 태그에 절대 URL을 사용하고

<img src="http://www.mywebsite.com/image.jpg" /> 

당신은

처럼,뿐만 아니라 로컬 경로를 추가 할 수 있습니다 당신은 종료됩니다
<%= image_tag "/images/image.jpg" %> 
<img src="/images/image.jpg" /> 
실제로 파일을 사전 컴파일 할 때, 그것은 /공공/자산 내에서 모든 것을두고 레일, 때문에 발생하는 문제입니다

, 당신은 같은 경로를를 /자산을 이동하여 해당 파일에 액세스 할 수 있습니다 다른 사용자가 설명했다. 당신이

<img src="/assets/image.jpg" /> 

당신이 할 수있는 다른 일에 종료하기 때문에

그래서 코드

<%= image_tag "/assets/image.jpg" %> 

실제로 작동, 즉, 상대 경로를 사용하는

<%= image_tag "image.jpg" %> 

입니다 그러면

0으로 변환됩니다.

그리고 마지막 시나리오와 똑같이 작동합니다.

그럼에도 불구하고, 응용 프로그램에, 당신은 사용자가 실제 응용 프로그램에 자신의 이미지를이 책에 진출 할 때, 이것은 나중에 일어날을 업로드 할 수 있도록거야, 당신은 paperclip 또는 carrierwave

같은 보석을 사용합니다
+1

Thx 작성 및 시간 +1 : – swapnesh

관련 문제