3

Soundmanager 2(http://www.schillmania.com/projects/soundmanager2/doc/download/) 在我的 ruby​​ on rails 应用程序中不起作用。

只有当我添加 ?assets_debug=1 时它才有效,我尝试了所有 sm .js 文件,但每次应用程序都不会重新启动。

错误:

soundManager is not defined
[Break On This Error]   

soundManager.setup({

并在萤火虫内部的 JS 代码中:

<script>
//<![CDATA[
soundManager.setup({
url: '/assets/',
debugMode: false,
onready: function() {
var mySound = soundManager.createSound({
id: 'aSound',
url: '/assets/start.mp3',
onload: function() { console.log('sound loaded!', this); }
});
mySound.play();
},
ontimeout: function() {
}
});
//]]>
</script> 

有人知道为什么会这样吗?

4

1 回答 1

1

您可能有两个版本的 js——原始源文件,以及为 Rails 3 资产管道创建的编译文件(缩小、连接等)。

有时 JS 中的细微错误会导致编译过程生成无效代码(例如,如果一个文件没有以换行符结尾而附加了另一个文件)。当你运行 with 时assets_debug=1,你告诉 Rails 使用不受影响的原始源文件。

调试这个是一个挑战——无论是在 Firebug 还是 Chrome 调试器中,缩小的代码充其量是难以阅读的。但它可以给你一个线索。

另一个可能的原因是 Rails 默认和 soundmanager 使用的版本之间的 jQuery 版本差异尚未解决。您可能想查看正在使用的 jQuery 版本。但是,您报告的错误并不表明这是一个原因。

最后,确保在app/assets/javascripts/application.js文件中满足任何实际的依赖关系,可能通过更改在这些行之前或之后指定项目的顺序,这实际上不是注释:-)

//= require jquery
//= require jquery_ujs
于 2012-11-08T21:00:33.557 回答