3

これは、stackoverflow での最初の質問です。JPlayer のプレイリストと Rails に基づいてシンプルな音楽ストリーマーを構築しています。基本的に、mp3 をルート ディレクトリにコピーし、アーティスト別にファイルのインデックスを作成します。次に、JQuery オートコンプリートを使用してアーティストを検索し、そのアーティストのプレイリストを生成して、mp3 で JSON 配列を取得します。ディレクトリまたはファイルに開き角括弧が含まれていない限り、すべて正常に機能します。

Mon Nov 07 11:48:09 +0100 2011 ActionController::RoutingError で 127.0.0.1 の GET "/music/[hello.mp3" を開始しました ([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"
}

誰でも私を助けることができますか?ありがとう

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 に答える