В приложении Rails 3.0.11 я использую обычные вспомогательные методы для генерации URL для некоторых ссылок (например:
home_url() # for the home page
search_url() # for the search page
и т.д..
)
Я передаю несколько параметров, которые будут использоваться для создания строки запроса, которая затем добавляется к URL-адресу. например,
search_url(:text => '123') # => http://mysite.com/search?text=123
Некоторые из этих параметров становятся немного сложнее, и есть несколько вложенных хэшей, например,
search_url(:text => '123', :categories => {:category_1 => 1, :category_2 => 2}) # => http://mysite.com/search?text=123&categories[category_1]=1&categories[category_2]=2
Проблема, с которой я столкнулся, заключается в том, как избежать этого должным образом, чтобы он проверялся (по отношению к валидатору W3C HTML), особенно в отношении квадратных скобок. Если я использую h (), амперсанды экранируются, но все равно не проходят проверку в квадратных скобках. Я могу использовать CGI.escape для всей строки, но это также закодирует все перед строкой запроса, включая: // в начале адреса, что означает, что браузер будет обрабатывать его как относительный URL, когда он должен быть абсолютным (это Я должен быть боюсь).
Я знаю, что могу просто взломать строку, закодировать нужные мне биты и собрать их обратно, но похоже, что должен быть лучший способ. Кто-нибудь знает один?
Приветствия
Адам