[ruby-on-rails] Rails 4 이미지 경로, 이미지 URL 및 자산 URL이 더 이상 SCSS 파일에서 작동하지 않습니다.

image-urlRails 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 execbundler를 실행하는 경우 접두사를 붙여야합니다 .


답변

첫 번째 공식 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-urlcss 파일과 동일한 디렉토리 구조에 정의 된 이미지를 찾습니다 .

당신의 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’))


답변