Rails не может найти файлы, содержащие открытую квадратную скобку - PullRequest
3 голосов
/ 07 ноября 2011

Это мой первый вопрос в stackoverflow.Я создаю простой музыкальный стример, основанный на плейлистах JPlayer и Rails.По сути, я копирую свои mp3-файлы в корневой каталог и индексирую файлы по исполнителям.Затем я использую автозаполнение JQuery для поиска исполнителя и генерирую плейлист для этого исполнителя, возвращая массив JSon с mp3-файлами.Все работает нормально, если каталог или файл не содержат открытую квадратную скобку.

Запущен GET "/music/[hello.mp3" для 127.0.0.1 в понедельник, 07 ноября 11:48:09 +0100 2011 ActionController:: RoutingError (Нет совпадений с маршрутом [GET] "/music/[hello.mp3"):

Все отлично работает с /music/hello.mp3

Я могу воспроизвести ошибку с или безсимволические ссылки, и только с [, но не с].Я уже пытался сбежать с \ [или \\ [.Это не решает проблему.Я использую рельсы 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"
});

@ title содержит

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

Может кто-нибудь помочьмне?Спасибо

1 Ответ

0 голосов
/ 07 ноября 2011

Используйте 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"
...