Как настроить RESTful-маршруты в Rails (основы) - PullRequest
2 голосов
/ 19 марта 2010

Я прочитал документы Rails для Маршрутизация , Ресурсы Restful и UrlHelper , и до сих пор не понимаю лучшие практики для создания сложных вложенные маршруты. Пример, над которым я сейчас работаю, относится к событиям has_many rsvps. Поэтому пользователь просматривает список событий, регистрирует клики, проходит процесс регистрации и т. Д. Я хочу, чтобы URL-адреса выглядели так:

/events
/events/123 # possible without title, like SO
/events/123/my-event-title # canonical version
/events/my-category/123/my-event-title # also possible like this
/events/123/my-event-title/registration/new
... and all the restful nested resouces.

Вопрос в том, как мне сделать это с минимальным количеством кода?

Вот что у меня сейчас есть:

map.resources :events do |event|
  event.resources :rsvps, :as => "registration"
end

Вот и получилось:

/events/123/registration

Какой лучший способ выполнить другие 2 маршрута?

/events/123/my-event-title # canonical version
/events/my-category/123/my-event-title # also possible like this

Где my-category - это просто массив из 10 возможных типов, которым может быть событие.

Я изменил Event#to_param, чтобы вернуть "#{self.id.to_s}-#{self.title.parameterize}", но я бы предпочел иметь /id/title со всей канонической сущностью

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Поскольку описанные вами SEO-дружественные URL-адреса не соответствуют тому, как Rails генерирует RESTful-маршруты, вам необходимо использовать обычные маршруты для их настройки. Например:

map.show_event 'events/:id/:event_title', :controller => 'events', :action => 'show'

Не думайте, что вам нужно использовать автоматически сгенерированные RESTful-маршруты для абсолютно всего в вашем приложении. Это не всегда подходит для того, что вы пытаетесь сделать. Даже руководство по маршрутизации Rails говорит так:

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

0 голосов
/ 19 марта 2010

Вы смотрели руководство по маршрутизации Rails ? Он содержит много информации, которая поможет вам понять маршрутизатор, и содержит раздел о вложенных ресурсах .

...