2015-01-23 6 views
1

이전 Rails 3.2 프로젝트를 Rails 4.2로 변환하고 이미지 및 글꼴 에셋이 제대로로드되지 않았다는 사실을 발견했습니다. 레일 서버 로그에 오류가 없거나 Chrome의 개발 콘솔에 표시되었지만 이미지와 글꼴이 페이지에 표시되지 않았습니다.image_url vs image-url Rails 4.2 SCS

RubyMine을 사용하고 scss 파일을 보면 IDE가 image-pathfont-path의 사용에 대해 불만을 나타 냈습니다. 하이픈을 밑줄 (image_pathfont_path)로 변경하면 이미지와 글꼴이 웹 페이지에 나타납니다.

최근에 하이픈으로 연결된 함수를 더 이상 사용할 수 없게 변경 되었습니까? 하이픈과 밑줄 함수가 서로 별칭이 있습니까?

밑줄 함수 이름 (내부 안쪽 톱니 sass_functions의) 여기 표시 :

require 'sass' 

module Sprockets 
    module SassFunctions 
    def asset_path(path) 
     ::Sass::Script::String.new(sprockets_context.asset_path(path.value), :string) 
    end 

    def asset_url(path) 
     ::Sass::Script::String.new("url(" + sprockets_context.asset_path(path.value) + ")") 
    end 

    def image_path(path) 
     ::Sass::Script::String.new(sprockets_context.image_path(path.value), :string) 
    end 

    def image_url(path) 
     ::Sass::Script::String.new("url(" + sprockets_context.image_path(path.value) + ")") 
    end 

    def video_path(path) 
     ::Sass::Script::String.new(sprockets_context.video_path(path.value), :string) 
    end 

    def video_url(path) 
     ::Sass::Script::String.new("url(" + sprockets_context.video_path(path.value) + ")") 
    end 

    def audio_path(path) 
     ::Sass::Script::String.new(sprockets_context.audio_path(path.value), :string) 
    end 

    def audio_url(path) 
     ::Sass::Script::String.new("url(" + sprockets_context.audio_path(path.value) + ")") 
    end 

    def font_path(path) 
     ::Sass::Script::String.new(sprockets_context.font_path(path.value), :string) 
    end 

    def font_url(path) 
     ::Sass::Script::String.new("url(" + sprockets_context.font_path(path.value) + ")") 
    end 

    def javascript_path(path) 
     ::Sass::Script::String.new(sprockets_context.javascript_path(path.value), :string) 
    end 

    def javascript_url(path) 
     ::Sass::Script::String.new("url(" + sprockets_context.javascript_path(path.value) + ")") 
    end 

    def stylesheet_path(path) 
     ::Sass::Script::String.new(sprockets_context.stylesheet_path(path.value), :string) 
    end 

    def stylesheet_url(path) 
     ::Sass::Script::String.new("url(" + sprockets_context.stylesheet_path(path.value) + ")") 
    end 

    protected 
     def sprockets_context 
     options[:sprockets][:context] 
     end 

     def sprockets_environment 
     options[:sprockets][:environment] 
     end 
    end 
end 
  • 사스-3.4.10
  • 레일-4.2.0
  • 사스 레일 5.0. 1 개
  • 톱니-2.12.3는
+0

Sass는 이미지 경로 또는 글꼴 경로 도우미를 제공하지 않습니다. Ruby에서 하이픈과 밑줄을 교환 할 수없는 사용자 정의 Sass 함수를 작성할 수 있습니다. – cimmanon

+0

나는 OP가 [sass-rails] (https://github.com/rails/sass-rails) 보석을 사용하고 있다고 추측하고 있는데, 이것은 하이픈 처리 된 이름을 가진 sass 기능을 제공합니다. OP, IDE가 불평한다고 말하지만 코드가 실제로 작동하는지 여부는 밝히지 않았습니다. 그거야? –

+0

@Jordan - 좋은 캐치, 그것은 sass-rails 보석입니다. 내 질문에 명확히하려고합니다. 그러나 하이픈이 연결된 함수 이름이 작동하지 않습니다. 던져진 아무 오류도 없다, 그러나 심상 및 글꼴은 나타나지 않았다. 밑줄 메서드로 변경되면 자산은 –

답변

0

그것은처럼 보인다이 적합합니다. 이 같은 문제를 설명하고, 해결책은 지금 in the sass-rails README을 반영 :

톱니가 require, require_treerequire_self라는 의견의 내부에 배치 된 몇 가지 지침을 제공합니다. SASS/SCSS 파일에서 사용하지 마십시오. 그들은 매우 원시적이며 Sass 파일과 잘 작동하지 않습니다. 대신 sass-rails이 Rails 프로젝트의 규칙과 통합하도록 사용자 정의한 Sass의 기본 @import 지시문을 사용하십시오.