Rails找不到包含开放方括号的文件

时间:2011-11-07 10:52:02

标签: ruby-on-rails jplayer

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

于11月11日星期一11:48:09 +0100 2011年开始获取“/music/[hello.mp3”为127.0.0.1 ActionController :: RoutingError(没有路由匹配[GET]“/ music / [hello.mp3”):

/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"
}

任何人都可以帮助我吗? 感谢

1 个答案:

答案 0 :(得分: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"