2012-02-08 2 views
1

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

1. Фактическая конструкция

У меня есть определен resources :users и таким образом я определил различные действия, такие как новые, создать и обновить в контроллере Users. Это работает как ожидается, следуя URL-адресам нравится пользователям/новым, пользователям /: 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-адресов, как: пользователей /: ID/обзор/сети, и я не хочу, идентификатор пользователя будет показан в URL , Итак, мои вопросы:

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

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

ответ

0

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

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"} 
+0

Спасибо за ответ, но как насчет моего второго вопроса? –

+0

Также обратите внимание, что /users/:user_id/overview/networks(.:format) - я не хочу, чтобы: user_id там ... –

+0

Посмотрите http://stackoverflow.com/questions/2837102/changing -The-ID-параметр-в-рельсы-маршрутизация – rajibchowdhury

0
scope :path => 'users/overview' do 
    match ':id/profile', :to => 'users#show' 
    match ':id/network', :to => 'users#network' 
    end 
Смежные вопросы