Пользовательская вложенная маршрутизация в Rails 2.3 - PullRequest
1 голос
/ 25 мая 2011

Я пытаюсь изменить некоторые URL-адреса в этом проекте, над которым я работаю, но я не могу найти ни одного примера того, что я ищу, в какой-либо документации, и все мои попытки, похоже, заканчиваются тем, что они не работают.

Вот что я пытаюсь сделать.У меня есть сообщение, содержащее несколько изображений, и к отдельному изображению можно получить доступ с URL-адресом, подобным следующему:

/posts/aliased_title/images/2

Однако я хочу изменить его, чтобы удалить «сообщения» и «изображения»часть URL, измените его на что-то вроде / aliased_title / 2 .

Я знаю, как сделать это для одного контроллера, но как я могу сделать это с помощью контроллера изображений?Могу ли я сделать это таким образом, чтобы сгенерировать «пути» (например, post_image_path), или мне нужно жестко кодировать каждое отдельное действие в маршрутизации?

Заранее спасибо.

1 Ответ

2 голосов
/ 25 мая 2011

В зависимости от того, как выглядят ваши маршруты и заголовки с псевдонимами, вы можете использовать что-то вроде следующего:

resources :images, :path => '/:title/:id', :constrain => { :title => /[a-z_-]+/ }

# in your view
image_path(image.title, image)

Имейте в виду, что маршруты совпадают в том порядке, в котором они определены, поэтому вы захотите поместить этовнизу файла маршрутов, чтобы он не мешал таким маршрутам, как /users/2.

Все это говорит о том, , что вам следует тщательно продумать, может ли ваш сценарий использования жить с таким якорем, как /image. Это предотвратит множество проблем с маршрутизацией, которые, скорее всего, будут кусатьсяВы в заднице вниз по линии.Не обойтись без якоря, но это создает дополнительную работу.

...