2012-04-11 78 views
3

我想让jPlayer在一个rails应用程序中使用flash后备,至今没有运气!我的构造函数现在看起来是这样的:jPlayer + Rails 3.1.3 swfPath?

$("#jquery_jplayer_1").jPlayer({ 
preload: "auto", 
errorAlerts: true, 
swfPath: "javascripts", 
solution: "flash, html", 
supplied: "oga", 
wmode: "window", 
ended: function(e) { 
     ...some function... 
} 
}); 

我不能得到纠正swfPath看来,我必须在这里失去了一些关于jPlayer是如何寻找这条道路。我的其他资产(如样式表中的图像)似乎已正确路由到资产文件夹/ images文件夹。我似乎无法找到让jPlayer找到Jplayer.swf的魔法组合。我曾尝试将swf文件放在公用文件夹中,公用文件夹内的文件夹中,资产文件夹中以及assets文件夹中的javascripts文件夹中。没有运气!有没有人处理过这个问题?

回答

2

我有同样的问题...发现在互联网上没有的答案后,我开始尝试的东西:)

这为我工作(Rails的3.2):

$(document).ready(function(){ 
    $("#jplayer").jPlayer({ 
     ready: function (event) { 
      $(this).jPlayer("setMedia", { 
       m4a: "url goes here" 
      }); 
     }, 
     swfPath: "/", 
     supplied: "m4a", 
     solution: "flash, html" 
    }); 
}); 

或CoffeeScript的:

$ = jQuery 
$ -> 
    $(document).ready -> 
    $("#jplayer").jPlayer(
     ready: (event) -> 
     $(this).jPlayer "setMedia", 
      m4a: "url goes here" 
     preload: "auto", 
     swfPath: "/", 
     solution: "html, flash", 
     supplied: 'm4a') 

我把Jplayer.swf文件放在public /下。现在工作!

1

我认为一个很好的方法是将swf目录添加到资产管道。

您可以通过使用.js.erb

$(document).ready(function(){ 
    $("#jplayer").jPlayer({ 
    swfPath: "<%= asset_path "Jplayer.swf" %>" 
    }); 
}); 
0

由于加入

config.assets.paths << Rails.root.join("app", "assets", "swf") 

config/application.rb文件做到这一点,放下Jplayer.swf文件中vendor/swf/Jplayer.swf

在您的JS文件导入此没有人在这里提到它,你也可以在你的jplayer初始化代码中这样做:

适用于使用资产管道的Rails> = 3.2!

swfPath: "<%= escape_javascript(asset_path('jplayer/Jplayer.swf')) %>", 
solution: "flash,html", 
supplied: "rtmpa,mp3", 

记住该文件有一个大写J :-)