2013-05-27 2 views
0

vendor/assets/images/swf/에 .swf 파일이 있습니다. 해당 폴더의 자산 경로가 필요합니다.asset_path가 폴더의 경로를 잘못 반환합니다.

#= soundmanager2 

$ -> 
    soundManager.setup 
    url: '<%= asset_path "swf/" %>' 

하지만 (.js.coffee.erb)이 (은 .js)을 렌더링한다 : 나는 레일 4.0.0.rc1을 사용하고

(function() { 
    var $ = jQuery; 
    $(function() { 
    return soundManager.setup({ 
     url: '/swf/' 
    }); 
    }); 
}).call(this); 

. 나는 개발 모드에있다. /swf/soundmanager2.swf 반환 (404) 도우미 image_path 반환 /images/swf/하지만 /images/swf/soundmanager2.swf 또한 그것은 문제가 가치가 없다 (404)

+0

시도해보십시오. <% = asset_path ('swf/soundmanager2.swf') %>' –

+0

이 파일에 대한 유효한 경로를 얻지 만, SoundManager2가 네 개의 다른 파일 중 하나를 선택하기 때문에 도움이되지 않습니다. 그 길 아래에서. – michelpm

+0

이것이 Rails 자산 파이프 라인과 어떻게 관련되어 있는지 궁금합니다. –

답변

2

을 반환하면서이 때문에 다이제스트를 사용하지 않으려면, (200)를 반환 /assets/swf/soundmanager2.swf 경로는 파일의 이름을 마우스 오른쪽 단추로 얻을 수 있습니다. 그래서 해결책은 라이브러리를 수정하는 것입니다. 내가 필요로

일부 커피 스크립트 : normalizeMovieURL의 정의 내부 soundmanager2.js (V2.97a.20130512)의 내 사본에서

#= require soundmanager2 

jQuery -> 
    soundManager.swfNames = 
    "/soundmanager2.swf":    "<%= asset_path('swf/soundmanager2.swf') %>" 
    "/soundmanager2_debug.swf":  "<%= asset_path('swf/soundmanager2_debug.swf') %>" 
    "/soundmanager2_flash9.swf":  "<%= asset_path('swf/soundmanager2_flash9.swf') %>" 
    "/soundmanager2_flash9_debug.swf": "<%= asset_path('swf/soundmanager2_flash9_debug.swf') %>" 

    soundManager.setup 
    debugMode: <% if Rails.env.development? %>true<% else %>false<% end %> 
    url: '/' 

사운드 관리자 2의 경우는 이런 짓을 : 레일

url = ...    // After url is set 

url = sm2.swfNames[url]; // Workaround 
2

4의 모든 자산 헬퍼 (image_path, asset_path 및 좋아하는)를 사용하면 액세스하는 자산이 톱니에 의해 실제로 해석 인 경우에만 config.assets.prefix -prefixed 경로를 반환 나타납니다.
간단히 말해서 : 미리 컴파일 한 후에 디스크의 자산 경로에 있어야합니다.

따라서 asset_path('swf/')은 파일이 아니기 때문에 디렉토리가 아니기 때문에 작동하지 않습니다. (오히려, 톱니) < 4 레일 원본 이미지 (및 SWF 파일)에 카피하고는 동일한 파일의 절단 된 버전을 생성 :

또한, 난 다음 경험. 이 soundmanager 때문에 비록 내가 config.assets.digest = true을 가지고 있더라도 소화되지 않은 swf 파일을 찾을 수있었습니다.
레일 4가있는 경우, 원래의 이미지는 더 이상 복사되지 않습니다. they changed some precompile internals은 사운드 관리자가 플래시로 폴백하려는 경우 던져 버리기 때문입니다.

michelpm이 제안하는 것처럼이 soundmanager를 패치해야합니다.
에 대한 soundmanager-railsover on github 찾을 수있는 soundmanager에 대한 적절한 패치를 포함하여 수정 작업을 시작했습니다.

관련 문제