Как я могу предотвратить, чтобы link_to избегал слешей в параметрах URL в Rails? - PullRequest
5 голосов
/ 30 сентября 2008

Имея этот маршрут:

map.foo 'foo/*path', :controller => 'foo', :action => 'index'

У меня есть следующие результаты для link_to звонка

link_to "Foo", :controller => 'foo', :path => 'bar/baz'
# <a href="/foo/bar%2Fbaz">Foo</a>

Позвонив url_for или foo_url напрямую, даже с :escape => false, дайте мне тот же URL:

foo_url(:path => 'bar/baz', :escape => false, :only_path => true)
# /foo/bar%2Fbaz

Я хочу, чтобы полученный URL был: /foo/bar/baz

Есть ли способ обойти это без исправления рельсов?

Ответы [ 2 ]

4 голосов
/ 30 сентября 2008

Вместо передачи пути в строку, присвойте ей массив.

link_to "Foo", :controller => 'foo', :path => %w(bar baz)
# <a href="/foo/bar/baz">Foo</a>

Если у вас нет маршрута в вашем файле маршрутов, эта же ссылка будет создавать это:

# <a href="/foo?path[]=bar&path[]=baz">Foo</a>

Единственное место, где я мог найти это документальное подтверждение, это этот билет .

0 голосов
/ 30 сентября 2008

Любая причина, почему вам нужно сгенерировать URL с этим путем, хотя?

Было бы проще определить дополнительный маршрут для покрытия этого URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...