2012-04-01 3 views
1

В моем routes.rb файла, только записи у меня есть следующая:Rails 3 + Devise - Как заставить вложенные ресурсы/маршруты работать?

devise_for :users, :path => "accounts" 

resources :users do 
    resource :profile 
end 

но когда я запускаю «реки маршруты» Я могу видеть, что есть еще отображенные ресурсы для пользователя, т.е. новых, создавать, редактировать, обновление и т.д. ... это вызывает конфликт с некоторыми из путей изобрести такие как new_user_registration_path

 new_user_session GET /accounts/sign_in(.:format)   devise/sessions#new 
      user_session POST /accounts/sign_in(.:format)   devise/sessions#create 
    destroy_user_session DELETE /accounts/sign_out(.:format)   devise/sessions#destroy 
      user_password POST /accounts/password(.:format)   devise/passwords#create 
     new_user_password GET /accounts/password/new(.:format)  devise/passwords#new 
     edit_user_password GET /accounts/password/edit(.:format)  devise/passwords#edit 
         PUT /accounts/password(.:format)   devise/passwords#update 
cancel_user_registration GET /accounts/cancel(.:format)    devise/registrations#cancel 
     user_registration POST /accounts(.:format)     devise/registrations#create 
    new_user_registration GET /accounts/sign_up(.:format)   devise/registrations#new 
    edit_user_registration GET /accounts/edit(.:format)    devise/registrations#edit 
         PUT /accounts(.:format)     devise/registrations#update 
         DELETE /accounts(.:format)     devise/registrations#destroy 
      user_profile POST /users/:user_id/profile(.:format)  profiles#create 
     new_user_profile GET /users/:user_id/profile/new(.:format) profiles#new 
     edit_user_profile GET /users/:user_id/profile/edit(.:format) profiles#edit 
         GET /users/:user_id/profile(.:format)  profiles#show 
         PUT /users/:user_id/profile(.:format)  profiles#update 
         DELETE /users/:user_id/profile(.:format)  profiles#destroy 
        users GET /users(.:format)      users#index 
         POST /users(.:format)      users#create 
       new_user GET /users/new(.:format)     users#new 
       edit_user GET /users/:id/edit(.:format)    users#edit 
        user GET /users/:id(.:format)     users#show 
         PUT /users/:id(.:format)     users#update 
         DELETE /users/:id(.:format)     users#destroy 

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

ответ

0

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

devise_for :users, :path => "accounts", :only => [:index, :show] do 
    resource :profile 
end 
+0

Проблема в том, что я только хочу, чтобы изобрести созданы маршруты для пользователей, теперь их это один набор маршрутов, созданных по завещанию, и другой набор, созданный «resources: users». Как я могу сохранить маршруты разработки и все еще отображать профиль как вложенный ресурс? – Jason

+0

Я вижу. Попробуйте обновленный код. –

+0

@Jason У меня такая же проблема с дублированным набором маршрутов. Вы нашли решение? – lnreddy

0

Лучший способ сделать это было бы определить ваш Завещание (не вложенные) маршруты, используя «devise_for:», а затем в отдельный блок, сделать

resources :users, :only => :none do 
    resource :profile 
end 

Использования «: кроме =>: весь» останавливает любые невложенных Users маршрутов из определяются и переопределения ваших маршрутов завещать, но он по-прежнему создает все ваши users/3/profile маршрутов. Затем добавить :path => "accounts" заменить users

Так что ваш код будет выглядеть

devise_for :users, :path => "accounts" 

resources :users , :path => "accounts", :only => :none do 
    resource :profile 
end 
Смежные вопросы