[ruby-on-rails] Rails 4 이미지 경로, 이미지 URL 및 자산 URL이 더 이상 SCSS 파일에서 작동하지 않습니다.
image-url
Rails 4에서 다른 것을 제외 하고 다른 것을 사용해야 합니까? 말이 안되는 다른 값을 반환합니다. 내가 가지고있는 경우 logo.png
에 /app/assets/images/logo.png
내가 다음을 수행, 이것은 내가 무엇을 얻을 수 있습니다 :
image-url("logo.png") -> url("/images/logo.png") #obviously doesn't work
image-path("logo.png") -> "/images/logo.png"
asset-url("logo.png") -> url("/logo.png")
물론 이러한 작업은 적어도 /assets
앞에 필요하기 때문에 작동하지 않습니다 .
업데이트 : 사실, 방금 Rails 4에서 이미지에 액세스하려면 어떻게해야합니까? 에 이미지가/app/assets/images/logo.png
있습니다. 그러나 다음 URL 중 하나로 이동하면 여전히 내 이미지가 표시되지 않습니다.
http://localhost:3000/assets/logo.png
http://localhost:3000/assets/images/logo.png
http://localhost:3000/logo.png
http://localhost:3000/images/logo.png
업데이트 2 : 내가 가져올 수있는 유일한 방법logo.png
은/app/assets/stylesheets
디렉토리로 이동한 다음가져 오는것입니다.
http://localhost:3000/assets/logo.png
답변
이 문제가 직접 발생했습니다. 도움이 될만한 3 가지 사항 :
app/assets/images
디렉토리에 이미지를 배치 하면 경로에 접두사없이 직접 이미지를 호출 할 수 있어야합니다. 즉.image_url('logo.png')
- 자산을 사용하는 위치에 따라 방법에 따라 다릅니다.
background-image:
속성 으로 사용하는 경우 코드 줄은background-image: image-url('logo.png')
. 이는 less 및 sass 스타일 시트 모두에서 작동합니다. 뷰에서 인라인으로 사용하는 경우image_tag
레일에 내장 된 도우미 를 사용 하여 이미지를 출력해야합니다. 다시 한 번 접두사 없음<%= image_tag 'logo.png' %>
- 마지막으로 자산을 사전 컴파일하는 경우 자산
rake assets:precompile
을 생성하기 위해 실행 하거나rake assets:precompile RAILS_ENV=production
프로덕션을 위해 실행 합니다 . 그렇지 않으면 프로덕션 환경에 페이지를로드 할 때 지문이 생성 된 자산이 없습니다.
또한 포인트 3의 명령에 대해 bundle exec
bundler를 실행하는 경우 접두사를 붙여야합니다 .
답변
첫 번째 공식 image_url('logo.png')
은 정확합니다. 이미지가 발견되면 경로 /assets/logo.png
(프로덕션의 해시 포함)를 생성합니다. 그러나 Rails가 사용자가 이름을 지정한 이미지를 찾지 못하면 /images/logo.png
.
다음 질문은 Rails가 이미지를 찾지 못하는 이유입니다. app / assets / images / logo.png에 넣으면으로 이동하여 액세스 할 수 있습니다 http://localhost:3000/assets/logo.png
.
작동하지만 CSS가 업데이트되지 않으면 캐시를 지워야 할 수 있습니다. tmp/cache/assets
프로젝트 디렉토리에서 삭제 하고 서버 (webrick 등)를 다시 시작합니다.
이것이 실패하면 background-image: url(logo.png);
CSS가 동일한 상대 경로 (이 경우 / assets)를 가진 파일을 찾도록합니다.
답변
asset_url
헬퍼를 사용 하면 문제를 해결할 수 있다는 것을 방금 알아 냈습니다 .
asset_url("backgrounds/pattern.png", image)
답변
인라인 CSS로 배경 이미지를 추가하려고 시도하면서 비슷한 문제가 발생했습니다. 자산 동기화가 작동하는 방식으로 인해 이미지 폴더를 지정할 필요가 없습니다.
이것은 나를 위해 일했습니다.
background-image: url('/assets/image.jpg');
답변
Rails 4.0.0은 image-url
css 파일과 동일한 디렉토리 구조에 정의 된 이미지를 찾습니다 .
당신의 CSS에서 예를 들어 assets/stylesheets/main.css.scss
, image-url('logo.png')
이된다 url(/assets/logo.png)
.
당신이 당신의 CSS 파일을 이동하면 assets/stylesheets/cpanel/main.css.scss
, image-url('logo.png')
이된다 /assets/cpanel/logo.png
.
assets / images 디렉토리에서 직접 이미지를 사용하려면 다음을 사용할 수 있습니다. asset-url('logo.png')
답변
스타일 시트 : url (asset_path ( ‘image.jpg’))