[ruby-on-rails] Rails 3.1 및 이미지 자산

관리자라는 폴더의 자산 폴더에 관리자 테마에 대한 모든 이미지를 넣었습니다. 그런 다음 정상적인 것처럼 연결합니다.

# Ruby    
image_tag "admin/file.jpg" .....
#CSS
.logo{ background:url('/assets/images/admin/logo.png');

참고로 테스트를 위해 자산을 컴파일하지 않았기 때문에 아직 asset_path 태그를 사용하지 않습니다.

이미지를 업데이트하기로 결정하기 전까지는 모든 것이 좋습니다. 일부 색상을 교체했지만 다시로드하면 새 스타일 이미지가 표시되지 않습니다. 브라우저에서 이미지를 직접 보면 여전히 오래된 이미지가 표시됩니다. 한 단계 더 나아가서 나는 관리 이미지 폴더를 파괴했습니다. 그러나 여전히 모든 이미지가 표시되지 않습니다. 그리고 네 캐시를 지우고 여러 브라우저에서 시도했습니다.

어떤 종류의 이미지 캐싱이 진행되고 있습니까? 이것은 pow를 사용하여 페이지를 제공하는 로컬 개발입니다.

전체 이미지 폴더를 파괴하더라도 이미지가 계속 제공됩니다.

뭔가 빠졌습니까?



답변

3.1에서는 경로의 ‘이미지’부분을 제거합니다. 따라서이 /assets/images/example.pngURL에서 요청을 받으면 실제로 이미지에 액세스 할 수 있습니다./assets/example.png

assets/images폴더가 새로운 3.1 앱과 함께 생성 되기 때문에 이는 사용자가 따르기를 원하는 규칙입니다. 나는 그것이 image_tag그것을 찾을 곳이라고 생각 하지만, 아직 테스트하지 않았습니다.

또한 RailsConf 기조 연설에서 D2h public folder가 더 이상 많은 것을 가져서는 안되며 주로 오류 페이지와 파비콘 이라고 말한 것을 기억 합니다.


답변

당신은에서 CSS 파일의 확장자를 변경 할 수 있습니다 .css.scss.css.scss.erb및 수행

background-image:url(<%=asset_path "admin/logo.png"%>);

변경 사항을 보려면 “하드 새로 고침”을 수행해야 할 수도 있습니다. OSX 브라우저에서 CMD + SHIFT + R

생산 과정에서

rm -rf public/assets    
bundle exec rake assets:precompile RAILS_ENV=production

배포시 발생합니다.


답변

그만한 가치가 있기 때문에 내가 이것을했을 때 css 파일의 경로에 폴더가 포함되어 있지 않아야한다는 것을 알았습니다. 예를 들어 가지고 있다면 app/assets/images/example.png이것을 CSS 파일에 넣습니다 …

div.example { background: url('example.png'); }

… 어쨌든 그것은 마술처럼 작동합니다. 나는 rake assets:precompile모든로드 경로에서 모든 것을 빨아 들여 정크 서랍 폴더에 덤프 하는 작업 을 실행하여 이것을 알아 냈습니다 public/assets. 아이러니 한 IMO …

어쨌든 이것은 폴더 경로를 넣을 필요가 없다는 것을 의미하며 자산 폴더의 모든 것이 하나의 거대한 디렉토리에있게됩니다. 이 시스템이 파일 이름 충돌을 해결하는 방법은 확실하지 않으므로주의해야합니다.

좌절의 종류가 큰 변화에 대한 더 나은 문서가 없습니다.


답변

rails 4에서는 CSS 및 SAS 도우미 이미지 URL을 사용할 수 있습니다.

div.logo {background-image: image-url("logo.png");}

배경 이미지가 표시되지 않으면 스타일 시트에서 이미지를 참조하는 방법을 살펴보십시오.


답변

CSS 또는 IMG 태그에서 이미지를 참조 할 때는 image-name.jpg를 사용하십시오.

이미지는 실제로 ./assets/images/image-name.jpg 아래에 있습니다.


답변

http://railscasts.com/episodes/279-understanding-the-asset-pipeline

이 레일 캐스트 (자산 파이프 라인의 레일 튜토리얼 비디오)는 자산 파이프 라인의 경로를 설명하는 데 많은 도움이됩니다. 나는 그것이 꽤 유용하다는 것을 알았고 실제로 몇 번 보았습니다.

내가 선택한 솔루션은 위의 @Lee McAlilly이지만이 레일 캐스트는 왜 그것이 작동하는지 이해하는 데 도움이되었습니다. 그것이 도움이되기를 바랍니다!


답변

레일의 자산 파이프 라인은이 정확한 방법을 제공합니다.

CSS 또는 scss 파일에 image_path ( ‘image filename’)를 추가하기 만하면 rails가 모든 것을 처리합니다. 예를 들면 다음과 같습니다.

.logo{ background:url(image_path('admin/logo.png'));

(.erb보기와 동일하게 작동하며 경로에 “/ assets”또는 “/ assets / images”를 사용하지 않습니다)

Rails는 다른 헬퍼 메소드도 제공합니다. 또 다른 답변이 있습니다 : Rails 3.1을 사용할 때 Sass에서 참조 이미지를 어떻게 사용합니까?