2012-12-16 43 views
2

我想在我的Ruby on Rails應用程序中使用SoundManager2播放聲音。它想要的一個東西是一個帶有swfs的目錄。我在哪裏放置它,然後如何配置我的聲音管理器?我想將它們放在一個目錄/ SoundManager類/和使用JS如下列:在Ruby on Rails 3.1+中暴露靜態文件?

<script> 
if (soundManager) { 
    soundManager.setup({ 
    url: '/soundmanager/', 
    onready: function() { 
     var myGameMusic = soundManager.createSound({ 
     id: 'music1', 
     url: 'music1.wav' 
     }); 
     myGameMusic.play(); 
    }, 
    ontimeout: function() { 
     console.log("Error in soundManager.setUp") 
     // Hrmm, SM2 could not start. Missing SWF? Flash blocked? Show an error, etc.? 
    } 
    }); 
} 
</script> 

我應該把主權財富基金(/ SoundManager類/)和如何配置它是公共的?

一個相關的問題是:假設我有一些PDF,我想使其可以downlaodable。我在哪裏可以下載這些內容?

我很困惑,因爲有一個/ public目錄,但顯然它不再在rails 3.1中工作了。

回答

1

你把它們放在app/assets/

最關鍵的是,他們從那裏發展模式服務。

生產模式,資產被微細化以及放置在public/

這就是所謂的「資產彙編」和Rails的3.1引入並已造成了很多混亂,你都看到了。

+1

資產彙編看起來不錯。所以假設我在app/assets/soundmanager/soundmanager2.swf有一個文件。什麼URL爲您提供文件?訪問mydomain.com/soundmanager/soundmanager2.swf給我一個「無路由」的錯誤。 – Geoff

+0

@Jeff你可能想在你的視圖中使用'asset_path'助手。在製作過程中,您的資產文件名後面會加上一個散列。順便說一下,路徑始終是'mydomain.com/assets/someasset-somehash.extension' – regulatethis

1

Web服務器應該提供靜態資源以及Rails(不是 Rails)。

我必須這樣做才能在Apache/Passenger上使用Rails應用程序來安裝phpMyAdmin。

# Apache vhosts.conf 
<Location ~ "/static_content"> 
    PassengerEnabled off 
</Location> 

這將直接從Apache服務於/static_content的內容,完全繞過Rails。理想情況下,這是靜態內容的最佳解決方案。