这是我在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"
}
任何人都可以帮助我吗? 感谢
答案 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"