이것은 Sprockets Rack 엔드 포인트를 사용하는 Sinatra 앱입니다. HTML 페이지에서 JavaScript 파일을 참조 할 때 스크립트 파일을 HTML에 포함하는 대신 상대 경로를 사용하여 위치를 가리키고 싶습니다. 이렇게하면 디버깅이 향상됩니다.자산의 상대 경로를 반환하는 Sprockets 메서드가 있습니까?
스프라켓은 config.ru의 정의는 랙 : (이 작품을 :
map '/assets' do
SPROCKETS = Sprockets::Environment.new
SPROCKETS.append_path File.join(SPROCKETS.root, '/public/assets/js')
SPROCKETS.append_path File.join(SPROCKETS.root, '/public/assets/css')
SPROCKETS.append_path File.join(SPROCKETS.root, '/public/assets/fonts')
SPROCKETS.append_path File.join(SPROCKETS.root, '/public/assets')
SPROCKETS.paths.each{|path| puts path;}
SPROCKETS.js_compressor = :uglify
SPROCKETS.css_compressor = :scss
run SPROCKETS
end
는 HTML에서 자바 스크립트 파일을 참조하려면, 나는 다음과 같이 효과적으로 문자열로 소스를 포함하는 스크립트 태그 내에 정의 다음과 같이 내가하고 싶은 무엇)
<script><%= SPROCKETS["frontend.js.erb"].to_s %></script>
는 독립적 인 소스로 파일 참조입니다 :
<script type="text/javascript" src="<%= SPROCKETS["frontend.js.erb"].filename %>"></script>
스프라켓 "파일 이름"방법은 전체 경로를 반환하고 페이지가 로컬 파일 시스템을 액세스 할 수 없기 때문에
Not allowed to load local resource: file:///C:/Bitnami/rubystack-2.2.5-3/projects/myapp/public/assets/js/frontend.js.erb
는 물론, 이런 일이 발생 :
그 옵션은 다음과 같은 메시지를 반환합니다. 필요한 것은 서버의 상대 경로를 반환하는 메서드입니다. 또 다른 머리를 때리는 순간
나는 둘 다 시도 할 것이다. 감사. –