Rails - от ресурса RESTFul к настроенным маршрутам - PullRequest
1 голос
/ 08 февраля 2012

Это проблема дизайна, которую я пытаюсь решить. Я объясню, что у меня есть сейчас, и что я хотел бы иметь:

1. Актуальный дизайн

Я определил resources :users и тем самым определил различные действия, такие как new, create и update, в контроллере Users. Это работает, как ожидается, после urls , таких как users / new, users /: id и т.д ... Теперь я хочу сделать один шаг вперед и хочу сделать следующее ...

2. Что я ищу

Я хочу иметь такой маршрут:

users/overview/profile - This should be equivalent to `users/:id` (show action) 
users/overview/network - This should be equivalent to users/:id/network (list of networks for that user)

3. Моя идея

Моей первой идеей было определить что-то вроде этого:

resource :users do
 namespace :overview do
  resource :networks
 end
end

Но это будет работать для таких URL, как: users /: id / Overview / networks, и я не хочу, чтобы идентификатор пользователя отображался в URL. Итак, мои вопросы:

1 - Как я могу иметь дело с пользователями / обзором / сетями вместо пользователей /: id / Overview / networks, при условии, что я могу получить идентификатор пользователя из сеанса.

2 - Как я могу иметь возможность управлять URL-адресами следующим образом: users/overview/profile, где на самом деле профиль - это просто метод show users/:id Сейчас я определил все действия в контроллере пользователей, и все работает нормально ( новый, удалить, создать, обновить ...) Я просто не знаю, как перейти к этому обзору / профилю "пространства имен"

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012
  scope :path => 'users/overview' do
    match ':id/profile', :to => 'users#show'
    match ':id/network', :to => 'users#network'
  end 
0 голосов
/ 08 февраля 2012

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

users_overview_networks POST        /users/overview/networks(.:format)         {:action=>"create", :controller=>"overview/networks"}
new_users_overview_networks GET         /users/overview/networks/new(.:format)     {:action=>"new", :controller=>"overview/networks"}
edit_users_overview_networks GET         /users/overview/networks/edit(.:format)    {:action=>"edit", :controller=>"overview/networks"}
GET         /users/overview/networks(.:format)         {:action=>"show", :controller=>"overview/networks"}
PUT         /users/overview/networks(.:format)         {:action=>"update", :controller=>"overview/networks"}
DELETE      /users/overview/networks(.:format)         {:action=>"destroy", :controller=>"overview/networks"}
users POST        /users(.:format)                           {:action=>"create", :controller=>"users"}
new_users GET         /users/new(.:format)                       {:action=>"new", :controller=>"users"}
edit_users GET         /users/edit(.:format)                      {:action=>"edit", :controller=>"users"}
GET         /users(.:format)                           {:action=>"show", :controller=>"users"}
PUT         /users(.:format)                           {:action=>"update", :controller=>"users"}
DELETE      /users(.:format)                           {:action=>"destroy", :controller=>"users"}
...