0

我是一名新手 Rails 开发人员,我正在尝试使用 rails 和 soundcloud 做一件简单的事情,但似乎在搞砸 API 文档几天后找不到做我想做的最好的方法。

我正在尝试为当地的酒吧举办一场比赛,DJ 可以向我们发送他们最好的曲目,然后他们被投票赢得奖品。

我的近似方法是将他的曲目的 soundcloud url 存储在数据库字段中,然后通过小的 soundcloud 播放器在网络上显示这些曲目。

我想我可以在视图文件中使用这段代码。

<div id="player">
<object height="70" width="100%">
  <param name="movie" value="https://player.soundcloud.com/player.swf?    url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F{"<%= @trackid %>"}&player_type=tiny{widgetParams}">    </param>
  <param name="allowscriptaccess" value="always"></param>
  <param name="wmode" value="transparent"></param>
  <embed wmode="transparent" allowscriptaccess="always" height="18" width="100%"     src="https://player.soundcloud.com/player.swf?    url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F{trackId}&player_type=tiny{widgetParams}">    </embed>
</object> 
</div>

使用 track.id 的值更改 {trackid} im,我使用此代码在控制器中获取

 client = Soundcloud.new(:client_id => '2074955755d1c3997e10463d8a56960f')

# call the resolve endpoint with a track url
track = client.get('/resolve', :url => "http://soundcloud.com/forss/flickermood")

# print the track id
@trackid = track.id

这是行不通的。

我尝试完成这项工作的另一种方法是通过 oEmbed。我尝试运行 API 文档中的示例。

在查看文件中,我知道我必须放置 Javascript 小部件:

<script src="http://connect.soundcloud.com/sdk.js"></script>
<script>
SC.initialize({
  client_id: 'xxxxxxxxxxxxxxxxxxxxxxx'
});

var track_url = 'http://soundcloud.com/forss/flickermood';
SC.oEmbed(track_url, { auto_play: true }, function(oEmbed) {
  console.log('oEmbed response: ' + oEmbed);
});
</script>

在控制器中,这段代码:

# create a client object with your app credentials
client = Soundcloud.new(:client_id => 'xxxxxxxxxxxxxxxxxxxx')

# get a tracks oembed data
track_url = 'http://soundcloud.com/forss/flickermood'
embed_info = client.get('/oembed', :url => track_url)

# print the html for the player widget
puts embed_info['html']

我有点迷失了,我认为我在一些基本的事情上失败了,这就是为什么我找不到关于如何准确实现这一点的信息。

谢谢你的时间

4

1 回答 1

2

在你看来,这条线突然出现在我身上:

<param name="movie" value="https://player.soundcloud.com/player.swf?    url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F{"<%= @trackid %>"}&player_type=tiny{widgetParams}">    </param>

你周围的双引号@trackid切断了 value 参数并弄乱了你的 HTML。试试这个然后检查你的视图生成的 HTML:

<param name="movie" value="https://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F<%= @trackid %>&player_type=tiny{widgetParams}"></param>
于 2013-04-29T20:10:49.810 回答