3

这是我在 stackoverflow 上的第一个问题。我正在基于 JPlayer 的播放列表和 Rails 构建一个简单的音乐流媒体。基本上我将我的 mp3 复制到一个根目录中,并按艺术家对文件进行索引。然后我使用 JQuery 自动完成来搜索艺术家,并为该艺术家生成一个播放列表,以获取带有 mp3 的 JSon 数组。除非目录或文件包含开放方括号,否则一切正常。

2011 年 11 月 7 日星期一 11:48:09 +0100 ActionController::RoutingError 开始 GET "/music/[hello.mp3" for 127.0.0.1

/music/hello.mp3 一切正常

我可以使用或不使用符号链接来重现错误,并且只能使用 [,但不能使用 ]。我已经尝试用 \[ 或 \\[ 来逃避。它不能解决问题。我正在使用 rails 3.1.1,ruby 1.8.7。

index.js.erb 包含

new jPlayerPlaylist({
    jPlayer: "#jquery_jplayer_1",
    cssSelectorAncestor: "#jp_container_1"
}, [
    <%= @titles.html_safe %>
], {
    supplied: "mp3",
    wmode: "window"
});

@titles 包含

{
    title:"1 - hello",
    mp3:"music/[hello.mp3"
},
{
    title:"2 - goodbye",
    mp3:"music/[goodbye.mp3"
}

谁能帮我?谢谢

4

1 回答 1

0

在文件的字符串上使用CGI.escape以转义敏感元素。(RDoc:http ://www.ruby-doc.org/stdlib-1.8.7/libdoc/cgi/rdoc/CGI.html#method-c-escape )

CGI.escape('music/[hello.mp3')
=> "music%2F%5Bhello.mp3"
于 2011-11-07T15:05:21.517 回答